【问题标题】:Django admin: use checkboxes in list view in list_filter()Django admin:在 list_filter() 的列表视图中使用复选框
【发布时间】:2015-02-12 21:42:27
【问题描述】:

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

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

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

【问题讨论】:

  • 在管理面板中?不...不是没有覆盖表单和列表 html 模板
  • @warath-coder 是的,在模型列表视图的右侧。我会等待新版本,也许将来会更容易。

标签: python django django-admin


【解决方案1】:

适用于所有型号

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

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

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

对于单个模型

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

class FilterWithCustomTemplate(admin.SimpleListFilter):
    template = "custom_template.html"

示例

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

【讨论】:

    【解决方案2】:
    1. 单选按钮不能有多个选择,您需要将它们设为复选框。

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2012-10-18
      • 2012-04-06
      • 2020-09-20
      • 2012-05-03
      • 2015-01-08
      • 2016-06-02
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多