django-filter 自定義
阿新 • • 發佈:2022-03-25
在使用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)