我在使用 Django Rest Framework 时遇到此问题。我正在尝试使用患者 ID 执行获取请求。现在,假设我查找患者 ID=6,API 返回患者 ID=6、患者 ID=26 以及任何包含数字“6”的 ID 的结果。它看起来像是在搜索子字符串。我想让它工作,以便患者 id=6 仅返回 id =6 的患者结果
序列化器.py
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')
最佳答案
您可以使用django-filter
为此的库。
只需安装它:
pip install django-filter
并在您的 View 集中使用,如下所示:
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')
关于django - Django REST 框架过滤有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50532279/