1. 程式人生 > 其它 >django-filter 自定義

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)