过滤时,有些字段是 “区间” 字段(比如时间),该如何处理
过滤时,有些字段是 “跨表” 后的 “区间” 字段,又该如何处理
#3 起步
#3.1 新建一个Django项目
.
├── app
│...def salary_filter(self, queryset, name, value):
return queryset.filter(Q(tea__salary__gte =...method 的值
如果是区间,可以使用django_filters.RangeFilter,如果不是区间可以使用其他
重写函数时,里面的参数不会自动补全
坑
使用Q时,一定不能使用or / and,只能使用...| &
return 的数值,如果使用queryset.filter(xxx).filter(xxx),那么返回的结果是所有过滤的交集,如果每个自定义函数都返回自己过滤的数据(例如,models.Student.objects.filter...().filter()),那么过滤的结果是所有符合条件的并集
value的正确使用,value.start对应的是url中的min(salary_min),value.stop对应url的max(salary_max