2015-09-17 56 views
0

我有下面的類在我的管理站點:Django管理:查詢集過濾器不工作

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

在我的理解,這應該只返回對象進行MyClass.is_defaultTrue

編輯 的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!如果你想只顯示對象,其中is_default=True,可以覆蓋在模型管理的queryset方法真的怪我....

的Django 1.7.7

+0

你可以添加你的模型? –

+0

P.S.此前該字段被稱爲「默認」,我認爲可能會發生衝突...所以我只是將其重命名爲is_default並進行了遷移 – faboolous

+0

您想在模型管理中實現什麼功能?有一點不清楚,爲什麼你在model admin中有'options'變量。 –

回答

1

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

+0

在django 1.6中它更名爲'get_queryset' –

+0

@PawełPolewicz感謝您的更正 –