Exemple #1
0
class EmployeeFilter(filterset.FilterSet):
    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 = ['start_salary', 'end_salary', 'salary_in']
Exemple #2
0
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')
Exemple #3
0
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')
Exemple #4
0
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')
Exemple #5
0
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')
Exemple #6
0
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'
        ]
Exemple #7
0
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')
Exemple #8
0
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']
Exemple #9
0
class SaleFilterSet(filterset.FilterSet):
    year = filterset.NumberFilter(
        lookup_expr='year__exact',
        field_name='date'
    )

    class Meta:
        model = models.Sale
        fields = ['year']
Exemple #10
0
class DepartmentFilter(filterset.FilterSet):
    user_not_in = filterset.NumberFilter(method='filter_user_not_in')

    def filter_user_not_in(self, queryset: QuerySet, name, value):
        return queryset.prefetch_related(
            Prefetch('users', queryset=models.User.objects.exclude(pk=value))
        )

    class Meta:
        model = models.Department
        fields = ['user_not_in']
Exemple #11
0
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'
        ]
Exemple #12
0
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')
Exemple #13
0
class ChatMessageFilter(filterset.FilterSet):
    chat = filterset.NumberFilter(lookup_expr=FILTER_EQUALS)

    class Meta:
        model = models.ChatMessage
        fields = ['chat']