如何让ModelAdmin的过滤器默认不显示所有记录?
我在我的Django管理页面里添加了一个过滤下拉菜单,像这样。
class MyAdmin(admin.ModelAdmin):
list_filter = ('status',)
默认情况下,如果你在管理界面查看模型,它会显示所有的记录。但我想让它进行过滤:
status="open"
并且默认显示这些过滤后的结果。这可以做到吗?
2 个回答
-1
如果我理解得没错,你可以在模型里重新定义默认的模型管理器。
class myManager(models.Manager):
return self.filter(status = 'open')
class myModel(models.Model):
...
objects = myManager()
不过我觉得还有一种更优雅的方法。
0
我觉得你需要的是 ModelAdmin.ordering 这个设置。这里有相关的文档链接
如果你只想显示状态为 'open' 的记录,你可以为你的 modeladmin 定义一个自定义的默认查询集。这也是有文档的,这样你就可以把列表中的项目限制为只有状态为 'open' 的记录。不过要注意,这样做的话,其他状态不是 'open' 的记录就无法在后台管理界面访问了。