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