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

附言仅找到了这个类似的问题,但这里仅建议如何按具体范围进行分组,最后一个问题是2年前。

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

最佳答案

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

请注意,创建自己的过滤器实际上很容易。您需要做的只是:


子类SimpleListFilter并在其中创建一些方法,该方法将生成您的默认范围值和选定的范围值(用于使用过滤器呈现模板)
设置queryset方法,该方法将采用您的过滤器和过滤器列表queryset提交的参数
使用过滤器创建模板(基于admin/filter.html
template子类中设置SimpleListFilter属性,指向过滤器模板。


Django将传递给您的模板3个参数:


title-您的过滤器标题(来自类中的title属性)
choices-由类的choices方法生成的字典列表(默认情况下,它修改由lookups方法返回的元组列表)
spec-您的类实例。


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

关于python - Django Admin:数值字段过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39640350/

10-16 17:35