Django 在wagtailadmin中使用或Q()对象将\u选项\u限制为

Django 在wagtailadmin中使用或Q()对象将\u选项\u限制为,django,django-models,wagtail,Django,Django Models,Wagtail,Django 1.10.5 def limit_contributor_choices(): limit = Q(group__name="contributor") | Q(group__name="Group") return limit author = models.ForeignKey( settings.AUTH_USER_MODEL, blank=True, null=True, limit_choices_to=limit_contri

Django 1.10.5

def limit_contributor_choices():
    limit = Q(group__name="contributor") | Q(group__name="Group")
    return limit


author = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    blank=True, null=True,
    limit_choices_to=limit_contributor_choices,
    verbose_name=_('Author'),
    on_delete=models.SET_NULL,
    related_name='author_pages',
)
使用以下代码,如果一个用户在多个组中,那么查询将多次返回该用户。如何获得不同的值

我在wagtail管理中使用了它,自动生成下拉列表


也许另一种方法是重写queryset并添加distinct()?如果是这样,我不知道如何在wagtailadmin中覆盖它。一个可能的技巧是编译一个用户ID列表,然后将其作为过滤条件返回:

def limit_contributor_choices():
    allowed_user_ids = User.objects.filter(Q(group__name="contributor") | Q(group__name="Group")).values_list('id', flat=True)
    return Q(id__in=allowed_user_ids)

你在用表格吗?不,现在不行。这些是在wagtail管理中自动生成的