我正在学习如何使用Django 1.8管理站点。我创建了以下模型和模型管理类:
#models.py
class Car(models.Model):
manufacturer = models.CharField(max_length=200)
model = models.CharField(max_length=200)
owner = models.CharField(max_length=200, null=True)
#admin.py
class CarAdmin(admin.ModelAdmin):
list_display = ('manufacturer', 'model')
exclude = ('owner',)
问题是我的管理表单包含来自Car表的所有数据,但我想只显示所有者不为null的行。我怎样才能做到这一点?
答案 0 :(得分:1)
ModelAdmin
类有一个.get_queryset()
方法,您可以尝试编写自己的查询集:
#admin.py
class CarAdmin(admin.ModelAdmin):
list_display = ('manufacturer', 'model')
exclude = ('owner')
def get_queryset(self, request):
return Car.objects.exclude(owner=None)
答案 1 :(得分:1)
您可以覆盖模型管理类的get_queryset
方法。
class CarAdmin(admin.ModelAdmin):
list_display = ('manufacturer', 'model')
exclude = ('owner',) # note you need a comma to make this a tuple
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
return qs.objects.filter(owner__isnull=False)
请注意,更改此类查询集可能不是一个好主意 - 如果您稍后需要添加所有者,则无法在管理员中访问这些汽车。