Django Admin:数字字段过滤器

时间:2016-09-22 13:25:01

标签: python django django-admin

如何使用范围输入在Django Admin中为数字数据创建过滤器?

P.S。只发现了这个类似的问题,但这里只建议如何按具体范围分组,最后一个问题活动是2年前。

Django Admin: How do I filter on an integer field for a specific range of values

1 个答案:

答案 0 :(得分:1)

警告!在我的回答中提到的django API的某些部分被认为是内部的,可能会在未来的django版本中更改,而不会发出任何通知。

记住这一点,实际上很容易创建自己的过滤器。您所需要做的就是:

  1. 子类SimpleListFilter并在其中创建一些方法,它将生成默认范围值和选定范围值(用于使用过滤器渲染模板)
  2. 设置将使用过滤器和过滤器列表查询集提交的参数的查询集方法
  3. 使用您的过滤器创建模板(基于admin/filter.html
  4. template子类中设置SimpleListFilter属性,指向您的过滤器模板。
  5. Django将传递给你的模板3参数:

    • title - 您的过滤器标题(取自您班级的title财产)
    • choices - 您的类的choices方法生成的dicts列表(默认情况下,它会修改lookups方法返回的元组列表)
    • spec - 您的班级实例。

    从那时起,您可以使用模板中的spec来获取班级的任何属性或方法,因此应该可以创建任何过滤器。