【Django】自定义后台管理页面的数据过滤器
在 django 的官方 tutorial 中(实现一个简易的 poll 应用实例),第二部分简要介绍了 django 自带的后台管理系统。
第七部分介绍了更多的对后台管理页面的定制:
第七部分的添加过滤器:
但是有时候我们需要定制更精确的过滤器,或者说上面例子中的过滤器是基于 datetime 的;pub_date = models.DateTimeField(...)
这是因为 django 已经为我们实现过了默认的如果使用 datetime 的作为过滤的 key1,那么它就会给出 any date; Today; Past 7 days; ... 这些已经实现过了的过滤规则。
但是往往我们自己的数据更“一般”些,在 django 库中找不到已经实现过了针对该 key 的过滤规则。
这个时候就需要我们自己实现针对这个 key 的过滤规则了。
Overview
实例 - 自己定义针对整数范围的过滤规则
背景
如果你的数据库中的某一列,该列是整形。
而你想将该列当作过滤的 KEY,并且过滤的规则:我这里假设值为 < 0 的所有行;>= 0 的所有行。
比如说为这个列设定了默认值为
-1; 而有为其赋值的行都>= 0,
那么在后台查看数据的时候,想要将默认的-1过滤掉,让它不在页面上显示出来。
这种情况下,将该列整形作为 key使用 django 的默认过滤规则,相信我你可以试一下,绝对不是你想要的现象。
当然,我们还可以分为过滤出
< 0的所有行;过滤出(比如)0~100;101~1000; 这样分段的行。
这都可以通过定制过滤规则实现。
但是在这里我只演示< 0;>=0的分段规则如何编写(因为我已经写好了这个代码)。我相信把它改成你期望的规则也没有多大难度的。
看一下作为 key 的数据类型 - [o] 待续
在 admin.py 中定制过滤规则 -[o] 待续
Reference - N/A
-
KEY ?? => 这些过滤规则和排序没有什么不同 。。。待补充 ↩︎