django admin:queryset过滤器无法正常工作

时间:2015-09-17 04:57:00

标签: django postgresql filter

我的管理网站中有以下课程:

class MyClassAdmin(admin.ModelAdmin):
    options = forms.ModelMultipleChoiceField(queryset=MyClass.objects.filter(is_default=True), widget=FilteredSelectMultiple("verbose name", is_stacked=False))

根据我的理解,这应该仅返回MyClass.is_defaultTrue的对象。

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

1 个答案:

答案 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()