【发布时间】:2011-10-15 01:01:54
【问题描述】:
我像这样在我的 django 管理页面中添加了一个过滤器下拉列表。
class MyAdmin(admin.ModelAdmin):
list_filter = ('status',)
默认情况下,如果您在管理视图中转到模型,则默认显示所有记录。 但我希望它过滤:
status="open"
并默认显示。这可以实现吗?
【问题讨论】:
我像这样在我的 django 管理页面中添加了一个过滤器下拉列表。
class MyAdmin(admin.ModelAdmin):
list_filter = ('status',)
默认情况下,如果您在管理视图中转到模型,则默认显示所有记录。 但我希望它过滤:
status="open"
并默认显示。这可以实现吗?
【问题讨论】:
我认为您需要的是 ModelAdmin.ordering https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.ordering
如果您只需要 status='open' 您可以为您的模型管理员定义一个自定义默认查询集 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.queryset 并限制了你的 仅列出 status='open' 的项目。 (注意)但是在这种情况下,其他记录(状态!='open')将无法从管理员那里访问。
【讨论】:
如果我理解正确,您可以在模型中重新定义默认模型管理器
class myManager(models.Manager):
return self.filter(status = 'open')
class myModel(models.Model):
...
objects = myManager()
但我认为还有更优雅的方式。
【讨论】: