2017-03-03 46 views
1

的Django 1.10.5使用或Q()對象中wagtailadmin

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', 
) 

用下面的代碼,如果用戶是在一個以上的組,則該查詢返回該用戶多次。我如何獲得不同的價值?

我在w admin管理員中使用此自動生成下拉菜單。

也許另一種看待它的方法是重寫查詢集並添加distinct()?如果是這樣,我不知道如何重寫,在wagtailadmin

+0

您使用的形式? –

+0

不是現在。這些是在w admin管理員自動生成的 – Dafonz

回答

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)