class CityFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) state_name = filterset.CharFilter(field_name='state__name', lookup_expr=LIKE) class Meta: model = models.City fields = ['name', 'state_name']
class BranchFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) district_name = filterset.CharFilter(field_name='district__name', lookup_expr=LIKE) class Meta: model = models.Branch fields = ['name', 'district_name']
class StateFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) abbreviation = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.State fields = ['name', 'abbreviation']
class SupplierFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) legal_document = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.Supplier fields = ['name', 'legal_document']
class SaleFilter(filterset.FilterSet): customer = filterset.CharFilter(field_name='customer__name', lookup_expr=LIKE) employee = filterset.CharFilter(field_name='employee__name', lookup_expr=LIKE) branch = filterset.CharFilter(field_name='branch__name', lookup_expr=LIKE) class Meta: model = models.Sale fields = ['customer', 'employee', 'branch']
class DistrictFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) city_name = filterset.CharFilter(field_name='city__name', lookup_expr=LIKE) zone_name = filterset.CharFilter(field_name='zone__name', lookup_expr=LIKE) class Meta: model = models.District fields = ['name', 'city_name', 'zone_name']
class CustomerFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) gender = filterset.CharFilter(lookup_expr=LIKE) district = filterset.CharFilter(field_name='district__name', lookup_expr=LIKE) marital_status = filterset.CharFilter(field_name='marital_status__name', lookup_expr=LIKE) class Meta: model = models.Customer fields = ['name', 'gender', 'district', 'marital_status']
class ProductFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) product_group = filterset.CharFilter(field_name='product_group__name', lookup_expr=LIKE) supplier = filterset.CharFilter(field_name='supplier__name', lookup_expr=LIKE) product_or_group = filterset.CharFilter(method='filter_product_or_group') @staticmethod def filter_product_or_group(queryset: QuerySet, name, value): return queryset.filter(Q(name__icontains=value) | Q(product_group__name__icontains=value)) class Meta: model = models.Product fields = ['name', 'product_group', 'supplier', 'product_or_group']
class DistrictFilterSet(filterset.FilterSet): city = filterset.CharFilter(lookup_expr=choices.LIKE, field_name='city__name') class Meta: model = models.District fields = ['city']
class EmployeeFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) gender = filterset.CharFilter(lookup_expr=LIKE) department = filterset.CharFilter(field_name='department__name', lookup_expr=LIKE) district = filterset.CharFilter(field_name='district__name', lookup_expr=LIKE) marital_status = filterset.CharFilter(field_name='marital_status__name', lookup_expr=LIKE) start_salary = filterset.NumberFilter(field_name='salary', lookup_expr='gte') end_salary = filterset.NumberFilter(field_name='salary', lookup_expr='lte') salary_in = NumberInFilter(field_name='salary', lookup_expr='in') class Meta: model = models.Employee fields = [ 'name', 'gender', 'department', 'district', 'marital_status', 'start_salary', 'end_salary', 'salary_in' ]
class MeansPaymentFilter(filterset.FilterSet): description = filterset.CharFilter(lookup_expr='icontains') active = filterset.BooleanFilter(widget=BooleanWidget) year = filterset.NumberFilter(field_name='created_at', lookup_expr='date__year') class Meta: model = models.MeansPayment fields = ['description', 'active', 'year']
class CarShopFilterSet(filterset.FilterSet): """自定义店铺筛选器""" name = filterset.CharFilter(lookup_expr='startswith') minhot = filterset.NumberFilter(field_name='hot', lookup_expr='gte') maxhot = filterset.NumberFilter(field_name='hot', lookup_expr='lte') dist = filterset.NumberFilter(field_name='district') class Meta: model = CarShop fields = ('name', 'minhot', 'maxhot', 'dist')
class EstateFilterSet(filterset.FilterSet): """自定义楼盘筛选器""" name = filterset.CharFilter(lookup_expr='contains') minhot = filterset.NumberFilter(field_name='hot', lookup_expr='gte') maxhot = filterset.NumberFilter(field_name='hot', lookup_expr='lte') dist = filterset.NumberFilter(field_name='district') class Meta: model = Estate fields = ('name', 'minhot', 'maxhot', 'dist')
class ProductFilterSet(filterset.FilterSet): product_or_group = filterset.CharFilter(method='filter_product_or_group') def filter_product_or_group(selfself, queryset: QuerySet, name, value): return queryset.filter( Q(name__icontains=value) | Q(product_group__description__icontains=value)) class Meta: model = models.Product fields = ['product_or_group']
class ProductFilter(filterset.FilterSet): product_or_group = filterset.CharFilter(method='filter_product_or_group') @staticmethod def filter_product_or_group(queryset: QuerySet, name, value): return queryset.filter( Q(name__icontains=value) | Q(product_group__name__icontains=value)) class Meta: model = models.Product fields = ['product_or_group']
class EstateFilterSet(filterset.FilterSet): """重写父类方法,自定义筛选方式""" name = filterset.CharFilter(lookup_expr='startswith') minhot = filterset.NumberFilter(field_name='hot', lookup_expr='gte') maxhot = filterset.NumberFilter(field_name='hot', lookup_expr='lte') dist = filterset.NumberFilter(field_name='district') class Meta: # 指定哪一个模型做筛选 model = Estate # 指定根据哪些字段搜索 fields = ('name', 'minhot', 'maxhot', 'dist')
class PokemonFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=FILTER_LIKE) types = filterset.ModelMultipleChoiceFilter( queryset=PokemonType.objects.all(), field_name='types__name', to_field_name='name', widget=CheckboxSelectMultiple(), label='PokemonType', label_suffix='', ) class Meta: model = Pokemon fields = ['name', 'types']
class HouseInfoFilter(filterset.FilterSet): """房屋过滤类""" min_price = filterset.NumberFilter(field_name='price', lookup_expr='gte') max_price = filterset.NumberFilter(field_name='price', lookup_expr='lte') area = filterset.CharFilter(method='filter_by_area') @staticmethod def filter_by_area(queryset, name, value): return queryset.filter( Q(county__startswith=value) | Q(street__startswith=value) | Q(xiaoqu__startswith=value)) class Meta: model = HouseInfo fields = ('min_price', 'max_price', 'county')
class HouseInfoFilterSet(filterset.FilterSet): """自定义房源筛选器""" title = filterset.CharFilter(lookup_expr='contains') minprice = filterset.NumberFilter(field_name='price', lookup_expr='gte') maxprice = filterset.NumberFilter(field_name='price', lookup_expr='lte') minarea = filterset.NumberFilter(field_name='area', lookup_expr='gte') maxarea = filterset.NumberFilter(field_name='area', lookup_expr='lte') district = filterset.NumberFilter(method='filter_by_district') @staticmethod def filter_by_district(queryset, name, value): return queryset.filter(Q(district_level2=value) | Q(district_level3=value)) class Meta: model = HouseInfo fields = ('title', 'minprice', 'maxprice', 'minarea', 'maxarea', 'type', 'district')
class DistrictFilterSet(filterset.FilterSet): city = filterset.CharFilter( lookup_expr=choices.LIKE, field_name='city__name' ) start = filterset.DateFilter( lookup_expr='date__gte', field_name='created_at' ) end = filterset.DateFilter( lookup_expr='date__lte', field_name='created_at' ) class Meta: model = models.District fields = ['city']
class HouseInfoFilter(filterset.FilterSet): """房屋过滤类""" minprice = filterset.NumberFilter(field_name='price', lookup_expr='gte') maxprice = filterset.NumberFilter(field_name='price', lookup_expr='lte') minarea = filterset.NumberFilter(field_name='area', lookup_expr='gte') maxarea = filterset.NumberFilter(field_name='area', lookup_expr='lte') minmetro = filterset.NumberFilter(field_name='metro', lookup_expr='gte') maxmetro = filterset.NumberFilter(field_name='metro', lookup_expr='lte') area = filterset.CharFilter(method='filter_by_area') @staticmethod def filter_by_area(queryset, name, value): return queryset.filter( Q(city__startswith=value) | Q(county__startswith=value) | Q(street__startswith=value) | Q(comm_name__startswith=value) | Q(house_style__startswith=value)) class Meta: model = HouseInfo fields = ('minmetro', 'maxmetro', 'minprice', 'maxprice', 'minarea', 'maxarea', 'area')
class ProductFilter(filterset.FilterSet): name_or_detail_description = filterset.CharFilter( method='filter_name_or_detail_description') active = filterset.BooleanFilter(widget=BooleanWidget) price_start = filterset.NumberFilter(field_name='sale_price', lookup_expr='gte') price_end = filterset.NumberFilter(field_name='sale_price', lookup_expr='lte') sale_price = NumberInFilter(lookup_expr='in') id = NumberInFilter(lookup_expr='in') @staticmethod def filter_name_or_detail_description(queryset, name, value): return queryset.filter( Q(name__icontains=value) | Q(detail_description__icontains=value)) class Meta: model = models.Product fields = [ 'active', 'price_start', 'price_end', 'sale_price', 'name_or_detail_description', 'id' ]
class SaleItemFilter(filterset.FilterSet): product = filterset.CharFilter(field_name='product__name', lookup_expr=LIKE) class Meta: model = models.SaleItem fields = ['product']
class ZoneFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.Zone fields = ['name']
class UserFilterSet(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=choices.LIKE) class Meta: model = models.User fields = ['name']
class ProductGroupFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.ProductGroup fields = ['name']
class UserFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=FILTER_EQUALS) class Meta: model = models.User fields = ['name']
class MaritalStatusFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.MaritalStatus fields = ['name']
class DepartmentFilter(filterset.FilterSet): name = filterset.CharFilter(lookup_expr=LIKE) class Meta: model = models.Department fields = ['name']