Django 管理员:在 list_filter() 的列表视图中使用复选框

Django admin: use checkboxes in list view in list_filter()

我有一个模型 Transaction,在 state 字段上有另一个模型 (TransactionState) 的外键。所以在 admin.py 我有:

class TransactionAdmin(admin.ModelAdmin):
    ...
    list_filter = ('state', )
    ...

TransactionState 中,我有诸如“已付款”、“未付款”、“已交付”、“已取消”等记录,它工作正常,但我希望能够使用复选框进行过滤以允许多个选择像“付费”或“交付”。可能吗?

对于所有模型

您可以轻松override the django admin templates自定义管理员UI。

要编辑边栏过滤器,只需添加一个 templates/admin/filter.html 文件,然后使用单选按钮编写您的自定义 HTML。

请注意,这将更改所有模型的边栏过滤器。

对于单个模型

如果要更改单个模型的过滤器,可以为 ListFilter:

指定一个模板
class FilterWithCustomTemplate(admin.SimpleListFilter):
    template = "custom_template.html"

例子

作为参考例子,检查是default template for filter.html.

  1. 单选按钮不能多选,需要勾选。

  2. 您正在寻找的是制作自定义过滤器。我建议不要覆盖过滤器列表以包含带有复选框的检查表单,而是添加一个自定义过滤器,每个选项都作为过滤器。使用 this link 并向下滚动到 SimpleListFilter,您将能够使用 5-10 LOC 对其进行编码。