Django 管理表单自定义 select
Django admin form custom select
我正在学习如何使用 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 table 的所有数据,但我只想显示所有者不为空的行。我怎样才能做到这一点?
ModelAdmin
class 有一个 .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)
您可以覆盖模型管理的 get_queryset
方法 class。
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)
请注意,像这样更改查询集可能不是一个好主意——如果您以后需要添加所有者,您将无法在管理员中访问这些汽车。
我正在学习如何使用 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 table 的所有数据,但我只想显示所有者不为空的行。我怎样才能做到这一点?
ModelAdmin
class 有一个 .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)
您可以覆盖模型管理的 get_queryset
方法 class。
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)
请注意,像这样更改查询集可能不是一个好主意——如果您以后需要添加所有者,您将无法在管理员中访问这些汽车。