过滤所有用户以仅显示管理界面中的活动用户

时间:2017-03-06 09:55:23

标签: python django django-admin

我有一个模型,我们称之为X,它有一个ManyToManyField,可以列出任意数量的用户。在管理界面(可以创建这些X对象的唯一位置)中,我想根据它们是否处于活动状态(is_active=True)来过滤所有可能的用户。 X的旧实例可以拥有非活动用户,这很好。它只是X的新实例,无法添加非活动用户。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

最简单的方法是在管理类中使用自定义form。在那里,您可以设置querysetModelMultipleChoiceField参数:

# 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)