Django 管理员:我可以为模型方法添加过滤器吗?

Posted

技术标签:

【中文标题】Django 管理员:我可以为模型方法添加过滤器吗?【英文标题】:Django admin: Can I add a filter for a model method? 【发布时间】:2011-05-11 15:50:07 【问题描述】:

我有一个模型方法 status(),它返回“OK”、“WARNING”或“ERROR”。通过将状态添加到 list_display ModelAdmin 选项,可以在 Django 管理中显示状态。我还想做的是在 Django 管理员中激活状态过滤器。但是,如果我将状态添加到 list_filter ModelAdmin 选项,我会收到错误消息。无论如何要为模型方法添加过滤器吗?

【问题讨论】:

【参考方案1】:

你只能过滤数据库列,所以你被卡住了。作为一种解决方法,你可以在你识别状态的源列上添加过滤,或者为状态添加一个新的 db 列。

【讨论】:

这个答案来自 2010 年。它仍然正确吗?难道不是根据模型的字段而是根据模型的方法进行过滤吗?【参考方案2】:

您可以将 admin.SimpleListFilter 子类化,如下所述:

https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter

【讨论】:

以上是关于Django 管理员:我可以为模型方法添加过滤器吗?的主要内容,如果未能解决你的问题,请参考以下文章

Django 管理员添加自定义过滤器

Django为没有类/模型的视图添加下拉过滤器

如何在 django admin 中显示多个模型的更改列表?

Django:我可以通过单个方法调用将新模型实例列表添加到数据库吗?

我可以在 django 模型字段中添加帮助文本吗

Django中模型