2017-03-06 82 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

相关问题