class GoodsFilter(filters.FilterSet): pricemin = filters.NumberFilter(name='shop_price', lookup_expr='gte') pricemax = filters.NumberFilter(name='shop_price', lookup_expr='lte') name = filters.CharFilter(name='name', lookup_expr='icontains') goods_brief = filters.CharFilter(name='goods_brief', lookup_expr='icontains') top_category = filters.NumberFilter(method='top_category_filters') def top_category_filters(self, queryset, name, value): queryset = queryset.filter( Q(category__id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) return queryset class Meta: model = Goods fields = ['pricemin', 'pricemax', 'name']
class TitleFilter(filters.FilterSet): category = filters.CharFilter(field_name='category__slug') genre = filters.CharFilter(field_name='genre__slug') name = filters.CharFilter(field_name='name', lookup_expr='icontains') year = filters.NumberFilter(field_name='year') class Meta: model = Title fields = ('category', 'genre', 'year', 'name')
class ProjetoFilter(filters.FilterSet): nomeProj = filters.CharFilter(field_name="nome", lookup_expr='icontains') riscoProj = filters.CharFilter(field_name="risco", lookup_expr='icontains') valorProj = filters.NumberFilter(field_name="valor", lookup_expr='icontains') class Meta: model = Projeto fields = '__all__'
class EventFilter(filters.FilterSet): dtype = filters.NumberFilter(field_name='dtype', lookup_expr='exact') is_featured = filters.BooleanFilter(field_name='is_featured') is_featured_region = filters.BooleanFilter(field_name='is_featured_region') countries__in = ListFilter(field_name='countries__id') regions__in = ListFilter(field_name='regions__id') id = filters.NumberFilter(field_name='id', lookup_expr='exact') auto_generated_source = filters.ChoiceFilter( label='Auto generated source choices', choices=[(v, v) for v in SOURCES.values()], ) class Meta: model = Event fields = { 'disaster_start_date': ('exact', 'gt', 'gte', 'lt', 'lte'), 'created_at': ('exact', 'gt', 'gte', 'lt', 'lte'), }
class VocabularyFilter(filters.FilterSet): level = filters.NumberFilter(method=filter_level_for_vocab) reading_contains = filters.CharFilter(method=filter_reading_contains) part_of_speech = filters.CharFilter( method=filter_vocabulary_parts_of_speech) class Meta: model = Vocabulary fields = "__all__"
class EstateFilter(drf.FilterSet): """自定义楼盘数据过滤器""" name = drf.CharFilter(lookup_expr='contains') dist = drf.NumberFilter(field_name='district') class Meta: model = Estate fields = ('name', 'dist')
class GoodsFilter(filters.FilterSet): pricemin = filters.NumberFilter(field_name='shop_price', lookup_expr='gte', help_text="最低价格") pricemax = filters.NumberFilter(field_name='shop_price', lookup_expr='lte', help_text="最高价格") top_category = filters.NumberFilter(name="category", method="top_category_filter") def top_category_filter(self, queryset, name, value): return queryset.filter( Q(category_id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) class Meta: model = Goods fields = ['pricemin', 'pricemax', 'is_hot', 'is_new']
class DriverFilter(filters.FilterSet): id = filters.NumberFilter(name="id", label="ID", lookup_expr="exact") name = filters.CharFilter(field_name='user__profile__name', lookup_expr='icontains') phone = filters.CharFilter(field_name='user__profile__phone', lookup_expr='exact') driving_licence_number = filters.CharFilter(field_name='driving_licence_number', lookup_expr='icontains') class Meta: model = Driver fields = ['id', ]
class AdvertisementFilter(filters.FilterSet): """Фильтры для объявлений.""" creator = filters.NumberFilter(field_name='creator_id') created_at = filters.DateFromToRangeFilter() class Meta: model = Advertisement fields = ('creator', 'created_at',)
class TaxlotDataFilter(filters.FilterSet): year = filters.NumberFilter() year_range = filters.RangeFilter(name='year') total_value = filters.RangeFilter() percent_change = filters.RangeFilter() class Meta: model = TaxlotData fields = ('year','year_range','total_value','percent_change')
class BookFilter(filters.FilterSet): title = filters.CharFilter(lookup_expr="icontains") author = filters.CharFilter(lookup_expr="icontains") categories = filters.CharFilter(lookup_expr="icontains") published_date = filters.NumberFilter(lookup_expr="year") class Meta: model = Book fields = ("title", "author", "categories", "published_date")
class GoodsFilter(filters.FilterSet): #最新价格 pricemin = filters.NumberFilter(name="shop_price", lookup_expr='gte',help_text="最小价格") #最大价格 pricemax = filters.NumberFilter(name="shop_price", lookup_expr='lte',help_text="最大价格") #对name进行模糊查询,类似于sql里面的like语句,如果不指定lookup_expr就是完全匹配了 name = filters.CharFilter(name="name",lookup_expr="icontains",help_text="商品名称模糊查询") # 支持前端新的字段过滤 top_category = filters.NumberFilter(method="top_category_filters",help_text="首页顶部是否显示") #实现 def top_category_filters(self,queryset,name,value): queryset = queryset.filter(Q(category__id=value)|Q(category__parent_category_id=value)|Q(category__parent_category__parent_category_id=value)) return queryset class Meta: model = Goods fields = [ 'pricemin', 'pricemax',"name","is_hot","is_new"]
class BenchmarkFilter(filters.FilterSet): has_admin = filters.NumberFilter(method='has_admin_filter') class Meta: model = Benchmark fields = ['creator', 'has_admin'] def has_admin_filter(self, queryset, name, value): return queryset.filter(admin_group__user__id__contains=value)
class OrderFilter(filters.FilterSet): created_at = filters.DateFromToRangeFilter(field_name='created_at') updated_at = filters.DateFromToRangeFilter(field_name='created_at') order_sum = filters.RangeFilter(field_name='order_sum') product_id = filters.NumberFilter(field_name='positions__product_id') class Meta: model = Order fields = ('status', 'order_sum', 'updated_at', 'created_at')
class PepScoringFilterSet(filters.FilterSet): declaration_year = filters.NumberFilter( field_name='declaration__year', min_value=2015, max_value=date.today().year, ) pep_id = filters.NumberFilter( field_name='pep__id', min_value=1, ) pep_source_id = filters.NumberFilter( field_name='pep__source_id', min_value=1, ) class Meta: model = PepScoring fields = ('rule_id', )
class TitlesFilter(filters.FilterSet): name = filters.CharFilter(lookup_expr='contains', ) year = filters.NumberFilter(field_name='year', ) genre = filters.CharFilter(field_name='genre__slug', ) category = filters.CharFilter(field_name='category__slug', ) class Meta: model = Title fields = ['name', 'year', 'genre', 'category']
class GoodsFilter(filters.FilterSet): """ 商品的过滤类 """ pricemin = filters.NumberFilter(field_name="shop_price", lookup_expr='gte') pricemax = filters.NumberFilter(field_name="shop_price", lookup_expr='lte') top_category = filters.NumberFilter(field_name="category", method='top_category_filter') def top_category_filter(self, queryset, name, value): # 不管当前点击的是一级分类二级分类还是三级分类,都能找到。 return queryset.filter( Q(category_id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) class Meta: model = Goods fields = ['pricemin', 'pricemax', 'is_hot', 'is_new']
class GoodsFilter(filters.FilterSet): """ 商品的过滤类 """ pricemin = filters.NumberFilter(name="shop_price", lookup_expr='gte',help_text ="最小价格") pricemax = filters.NumberFilter(name="shop_price", lookup_expr='lte',help_text ='最大价格') name = filters.CharFilter(name ="name",lookup_expr='contains') top_category = filters.NumberFilter(method='top_category_filter') def top_category_filter(self,queryset,name,value): return queryset.filter(Q(category_id =value)\ |Q(category__parent_category =value)\ |Q( category__parent_category__parent_category = value)) class Meta: model = Goods fields = ['name', 'pricemin', 'pricemax','is_hot','is_new']
class BankFilter(filters.FilterSet): lower_interest_rate = filters.NumberFilter(field_name="interest_rates", lookup_expr='lte') class Meta: model = BankRates fields = [ 'loan_tenure', 'property_type', 'loan_type', 'lower_interest_rate' ]
class ToDoFilter(filters.FilterSet): #name = filters.CharFilter(lookup_expr='contains') project = filters.NumberFilter() create_date = filters.IsoDateTimeFromToRangeFilter( field_name='change_date') '''http://127.0.0.1:8000/api/todo/?create_date_after=2021-05-21T09:49:17&create_date_before=2021-05-21T19:49:17''' class Meta: model = ToDo fields = ('project', 'create_date')
class CountryFilterRMD(filters.FilterSet): region = filters.NumberFilter(field_name='region', lookup_expr='exact') class Meta: model = Country fields = ( 'region', 'record_type', )
class TitleFilter(filters.FilterSet): genre = filters.CharFilter(field_name='genre__slug', lookup_expr='iexact') category = filters.CharFilter(field_name="category__slug") name = filters.CharFilter(field_name="name", lookup_expr="contains") year = filters.NumberFilter(field_name="year", lookup_expr="iexact") class Meta: model = Title fields = ['genre', 'category', 'name', 'year']
class ArticlePostFilter(drf.FilterSet): """自定义经理人数据过滤器""" title = drf.CharFilter(lookup_expr='istartswith') views = drf.NumberFilter(field_name='servstar', lookup_expr='gte') class Meta: model = ArticlePost fields = ('title', 'views')
class CustomFilter(filters.FilterSet): name = filters.CharFilter(field_name='name', lookup_expr='contains') category = filters.CharFilter(field_name='category__slug') genre = filters.CharFilter(field_name='genre__slug') year = filters.NumberFilter(field_name='year') class Meta: model = Titles fields = ['category', 'genre', 'name', 'year']
class SituationReportFilter(filters.FilterSet): event = filters.NumberFilter(name='event', lookup_expr='exact') class Meta: model = SituationReport fields = { 'name': ('exact', ), 'created_at': ('exact', 'gt', 'gte', 'lt', 'lte'), }
class ItineraryFilter(filters.FilterSet): capacity_sold__gt = filters.NumberFilter(field_name='passenger__count__gt', lookup_expr='gt', method='capacity_sold_filter') capacity_sold__gte = filters.NumberFilter(field_name='passenger__count__gte', lookup_expr='gte', method='capacity_sold_filter') capacity_sold__lt = filters.NumberFilter(field_name='passenger__count__lt', lookup_expr='lt', method='capacity_sold_filter') capacity_sold__lte = filters.NumberFilter(field_name='passenger__count__lte', lookup_expr='lte', method='capacity_sold_filter') def capacity_sold_filter(self, queryset, name, value): return queryset.annotate(Count('passenger')).filter(**{ name: value }) class Meta(object): model = models.Itinerary fields = { 'route__id': ['exact',], 'route__name': ['exact', 'iexact', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith',], 'start_time': ['exact', 'gt', 'gte', 'lt', 'lte', 'day', 'month', 'range',], 'end_time': ['exact', 'gt', 'gte', 'lt', 'lte', 'day', 'month', 'range',], 'bus__capacity': ['exact', 'gt', 'gte', 'lt', 'lte',], }
class GoodsFilter(filters.FilterSet): pricemin = filters.NumberFilter(field_name='shop_price', lookup_expr='gte', label='最低价格') pricemax = filters.NumberFilter(field_name='shop_price', lookup_expr='lte', label='最高价格') top_category = filters.NumberFilter(method='get_top_category') def get_top_category(self, queryset, name, value): return queryset.filter( Q(category_id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) class Meta: model = Goods fields = ['pricemin', 'pricemax', 'top_category', 'is_hot']
class SlotFilterSet(filters.FilterSet): computer = filters.UUIDFilter(field_name="computer__external_id") program = filters.UUIDFilter(field_name="computer__program__external_id") max_students = filters.NumberFilter(field_name="max_students", lookup_expr="lte") language = filters.CharFilter(field_name="language") is_mentor_assigned = filters.BooleanFilter(field_name="is_mentor_assigned") is_student_assigned = filters.BooleanFilter( field_name="is_student_assigned")
class GoodsFilter(filters.FilterSet): pricemin = filters.NumberFilter(field_name="shop_price", help_text='最低价格', lookup_expr='gte') pricemax = filters.NumberFilter(field_name="shop_price", lookup_expr='lte') # name = filters.CharFilter(field_name='name',lookup_expr='icontains') top_category = filters.NumberFilter(field_name='查询某一类别商品', method='top_category_filter') def top_category_filter(self, queryset, name, value): queryset = queryset.filter( Q(category_id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) return queryset class Meta: model = Goods fields = ['pricemin', 'pricemax', 'is_hot', 'is_new']
class GoodsFilter(filters.FilterSet): #name代表过滤的字段,lookup_expr代表过滤的条件,相当于Goods.objects.filter(shop_price__get=price_min) pricemin = filters.NumberFilter(name='shop_price', lookup_expr='gte') pricemax = filters.NumberFilter(name='shop_price', lookup_expr='lte') #自定义过滤方法 top_category = filters.NumberFilter(name="category", method='top_category_filter') def top_category_filter(self, queryset, name, value): # 不管当前点击的是一级目录二级目录还是三级目录。 return queryset.filter( Q(category_id=value) | Q(category__parent_category_id=value) | Q(category__parent_category__parent_category_id=value)) class Meta: model = Goods fields = ['pricemin', 'pricemax', 'category']