我的管理网站中有以下课程:
class MyClassAdmin(admin.ModelAdmin):
options = forms.ModelMultipleChoiceField(queryset=MyClass.objects.filter(is_default=True), widget=FilteredSelectMultiple("verbose name", is_stacked=False))
根据我的理解,这应该仅返回MyClass.is_default
为True
的对象。
EDIT
MyClass
模型只有:
class MyClass(models.Model):
is_default = models.BooleanField(default=False, help_text="is default")
name = models.CharField(help_text="the name of this", max_length=50)
def __unicode__(self):
return self.name
但是,我会得到MyClass
的所有对象。只有2个设置为True
!这对我来说真的很奇怪......
django 1.7.7
答案 0 :(得分:1)
如果您只想显示is_default=True
的对象,可以覆盖模型管理员中的queryset
方法。
class MyClassAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(MyClassAdmin, self).queryset(request)
return qs.filter(is_default=True)
<强>更新强>
正如@pawel评论的那样,queryset()
方法已从Django 1.6重命名为get_queryset()
。