如何让ModelAdmin的过滤器默认不显示所有记录?

1 投票
2 回答
1192 浏览
提问于 2025-04-16 22:26

我在我的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' 的记录就无法在后台管理界面访问了。

撰写回答