Django REST框架过滤的问题?
我在使用Django Rest框架时遇到了这个问题。我正在尝试使用患者id执行get请求。现在,假设我查找patientid=6,api返回patientid=6、patientid=26以及任何包含数字“6”的id的结果。它看起来像是在搜索一个子字符串。我想让它工作起来,使patient id=6只返回id=6的patientid结果 序列化程序.pyDjango REST框架过滤的问题?,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我在使用Django Rest框架时遇到了这个问题。我正在尝试使用患者id执行get请求。现在,假设我查找patientid=6,api返回patientid=6、patientid=26以及任何包含数字“6”的id的结果。它看起来像是在搜索一个子字符串。我想让它工作起来,使patient id=6只返回id=6的patientid结果 序列化程序.py class Radiologypdfserializerdata(serializers.ModelSerializer): cla
class Radiologypdfserializerdata(serializers.ModelSerializer):
class Meta:
model = models.Radiologypdf
fields = (
'patientid',
'testinfo',
'clinicalindication',
'attendingdoctor',
'patientname',
'age',
'mobilenumber',
'sex',
'email',
'doctorsname',
'doctorsregistrationnumber',
'clinicname',
'doctorstelno',
'createdtime',
'radiology_id',
'created',
)
api.py
class RadiologypdfViewSet(viewsets.ModelViewSet):
"""ViewSet for the radiology class"""
queryset = models.Radiologypdf.objects.all()
serializer_class = serializers.Radiologypdfserializerdata
permission_classes = [permissions.IsAuthenticated]
filter_backends = (filters.SearchFilter,)
search_fields = ('patientid','radiology_id')
您可以使用该库进行此操作
只需使用以下软件安装:
pip install django-filter
并在视图集中使用如下内容:
from django_filters.rest_framework import DjangoFilterBackend
class RadiologypdfViewSet(viewsets.ModelViewSet):
"""ViewSet for the radiology class"""
queryset = models.Radiologypdf.objects.all()
serializer_class = serializers.Radiologypdfserializerdata
permission_classes = [permissions.IsAuthenticated]
filter_backends = (DjangoFilterBackend,)
filter_fields = ('patientid','radiology_id')
文件摘录:
搜索行为可以通过在搜索\u字段
前加各种字符来限制
- “^”以搜索开始
- “=”精确匹配
- “@”全文搜索。(目前仅支持Django的MySQL后端。)
- “$”正则表达式搜索
`search_fields = ('=patientid','radiology_id')`
因为您已经在使用SearchFilter,所以可以在筛选字段前加“=”。在这种情况下,您的筛选字段将是:
filter_fields = ('=patientid','=radiology_id')
根据文件:
搜索行为可以通过在搜索字段前添加各种字符来限制
- “^”以搜索开始
- “=”精确匹配
- “@”全文搜索。(目前仅支持Django的PostgreSQL后端。)
- “$”正则表达式搜索