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管理员中使用此功能,其中自动生成下拉列表。
或许另一种看待它的方法是覆盖查询集并添加distinct()?如果是这样,我不确定如何在wagtailadmin中覆盖它
答案 0 :(得分:0)
一个可能的技巧是编译用户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)