Django-filter,让过滤如此简单
https://zhuanlan.zhihu.com/p/110060840
#5 跨表过滤
需求:根据老师的名字过滤
class getUserListFilter(django_filters.rest_framework.FilterSet):
teaname = django_filters.CharFilter(field_name='tea__name', label="老师姓名") # 跨表操作
class meta:
model = models.Student
fields = ["name","teaname",]
from django_filters import FilterSet,filters
from . import models
class CarFilterSet(FilterSet):
max_price = filters.NumberFilter(field_name='price',lookup_expr='lte')
min_price = filters.NumberFilter(field_name='price',lookup_expr='gte')
class meta:
model = models.Car
# brand 还是实现分类
fields = ['brand','max_price','min_price']
class ProductFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact') # iexact表示精确匹配, 并且忽略大小写
author = django_filters.CharFilter(lookup_expr='icontains') #icontains表示模糊查询(包含),并且忽略大小写
price = django_filters.NumberFilter(look_expr='exact') #exact表示精确匹配
desc = django_filters.CharFilter('description', lookup_expr='contains') #对'description'字段进行操作,不填默认为desc
#price__lte = django_filters.NumberFilter('price', lookup_expr='lte') #lte表示小于
#price__gte = django_filters.NumberFilter('price', look_expr='gte') # gte表示大于
class meta:
model = Product
fields = ['name', 'author', 'price', 'description']
#fields = {
'price': ['lt', 'gt']
}



