筛选所有用户在管理界面中仅显示活动的用户
问题描述:
我有一个模型,我们称之为X,其中有一个ManyToManyField
,可以列出任意数量的用户。在管理界面(唯一可以创建这些X对象的地方)中,我想通过它们是否处于活动状态(is_active=True
)来过滤所有可能的用户。 X的旧实例可以有非活动用户,这很好。这只是X的新实例,不能添加非活动用户。筛选所有用户在管理界面中仅显示活动的用户
我该怎么做?
答
最简单的方法就是在管理员类中使用自定义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)
这是简单得多,比我期待。非常感谢。 – Sardathrion