2017-03-06 50 views
0

我有一個模型,我們稱之爲X,其中有一個ManyToManyField,可以列出任意數量的用戶。在管理界面(唯一可以創建這些X對象的地方)中,我想通過它們是否處於活動狀態(is_active=True)來過濾所有可能的用戶。 X的舊實例可以有非活動用戶,這很好。這只是X的新實例,不能添加非活動用戶。篩選所有用戶在管理界面中僅顯示活動的用戶

我該怎麼做?

回答

2

最簡單的方法就是在管理員類中使用自定義form。在那裏,你可以設置queryset參數ModelMultipleChoiceField的:

# forms.py 
class XForm(forms.ModelForm): 
    # or whatever the name of the ManyToManyField is 
    users = forms.ModelMultipleChoiceField(queryset=User.objects.filter(is_active=True)) 

    class Meta: 
     model = X 
     fields = '__all__' 

# admin.py 
class XAdmin(ModelAdmin): 
    form = XForm 

site.register(X, XAdmin) 
+0

這是簡單得多,比我期待。非常感謝。 – Sardathrion

相關問題