#现在mysql数据库有2个表,project1和 project2
#现在问题是目标是多个表,字段名相同, 过滤方法相同,这个要怎么写
#这是过滤器------------------------------------------------------------
from django_filters import rest_framework as filters
from api.pager import LimitPagination
from rest_framework import filters
class Project1Filter(filters.FilterSet): # 过滤一个表的写法, 现在要同时过滤多个表怎么写?
project_name=filters.CharFilter(lookup_expr='icontains')
order_date_gte = filters.DateFilter(field_name='order_date', lookup_expr='gte') # 大于等于 某日期
order_date_ite = filters.DateFilter(field_name='order_date', lookup_expr='ite') # 小于等于 某日期
class Meta:
model = Project1 # 这里写 数组报错
fields = ['project_name',' order_date_gte',' order_date_ite']
class Project2Filter(filters.FilterSet):
project_name=filters.CharFilter(lookup_expr='icontains')
order_date_gte = filters.DateFilter(field_name='order_date', lookup_expr='gte') # 大于等于 某日期
order_date_ite = filters.DateFilter(field_name='order_date', lookup_expr='ite') # 小于等于 某日期
class Meta:
model = Project2
fields = ['project_name',' order_date_gte',' order_date_ite']
#这个是视图函数------------------------------------------
from drf_multiple_model.views import FlatMultipleModelAPIView
class SearchGroup(FlatMultipleModelAPIView):
authentication_classes=[] #取消全局用户认证
permission_classes=[] #取消全局权限验证
throttle_classes=[]
querylist=[
{'queryset':models.Project1.objects.all(),
'serializer_class': Project1Serializer, #指定序列化器
# 'filter_class':Project1Filter 这个写法有问题
},
{'queryset':models.Project2.objects.all(),
'serializer_class': Project2Serializer, #指定序列化器
# 'filter_class':Project2Filter 这个写法有问题
},
]
filter_backends = (filters.SearchFilter,) #DRF自带了具有过滤功能的SearchFilter类 的用法
search_fields = ( 'project_name',) #指定过滤字段, 这个简单过滤可以用,模糊查找
pagination_class=LimitPagination # 这个类分页只能用limit
#这是路由的写法
re_path('group/',views.SearchGroup.as_view()),
re_path('group/?P<pk>\w+',views.SearchGroup.as_view()),
]
目前只实现了某字段char内容的模糊过滤, 现在主要问题是,要查询两个日期之间 的怎么过滤???
#官方文档例子 'filter_fn': title_without_letter 有这个过滤的写法, 但没整明白
请会的指点一下,!!!!!!!!!多谢了
请给 过滤 视图函数 路由 完整的方案
官方文档
https://django-rest-multiple-models.readthedocs.io/en/latest/filtering.html
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。