Reputation: 6320
I have the following class in my admin site:
class MyClassAdmin(admin.ModelAdmin):
options = forms.ModelMultipleChoiceField(queryset=MyClass.objects.filter(is_default=True), widget=FilteredSelectMultiple("verbose name", is_stacked=False))
In my understanding, this should return only objects for which MyClass.is_default
is True
.
EDIT
The MyClass
model only has:
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
However, what happens is I get all objects of MyClass
. Only 2 are set to True
! That's really weird to me....
django 1.7.7
Upvotes: 1
Views: 1102
Reputation: 4043
If you want to only show objects where is_default=True
, you can override the queryset
method in your model admin.
class MyClassAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(MyClassAdmin, self).queryset(request)
return qs.filter(is_default=True)
Update:
As @pawel commented, the queryset()
method was renamed to get_queryset()
from Django 1.6.
Upvotes: 1