django-filter 自定义
在使用django-filter的时候,可能需要对一个字段进行多个值筛选,比如&fltr_city=杭州,温州,这个时候可以使用自定义的过滤器。
当有多个筛选条件,自定义的过滤器一定要返回queryset的过滤值(queryset是其他筛选的返回值)
点击查看代码
class CustomerFilter(filters.FilterSet):
flter_region = filters.CharFilter(field_name='unit__city__province__region_region_name', lookup_expr='icontains', ,help_text='筛选的大区')
fltr_city = filters.CharFilter(method='filter_city', lookup_expr='in')
class Meta:
model = TbCustomer
fields = ['flter_region', 'fltr_city']
def filter_city(self, queryset, name, value):
value_list = list(filter(None, value.split(',')))
city_list = TbUnit.objects.filter(status, city__city_name__in=value_list)
city_id = [i.id for i in city_list]
d = TbCustomer.objects.filter(status=0,unit_id__in=city_id).all()
c_id = [i.id for i in d]
return queryset.filter(id__in=c_id)
分类:
Django
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构