[英]pass multiple fields to django rest framework api
我的模特
class car(models.Model):
name = models.CharField(max_length=255, unique=True)
speed = models.CharField(max_length=255)
age = models.CharField(max_length=255)
def __str__(self):
return self.name
我的api序列化器
class carSerializer(serializers.ModelSerializer):
class Meta:
model = car
fields = ('name', 'speed', 'age')
我的清单检视
class carListView(ListAPIView):
queryset = car.objects.all()
serializer_class = carSerializer
filter_backends = (DjangoFilterBackend,)
filter_fields = ('name', 'speed', 'age')
如何通过api链接搜索模型字段的name
, speed
, age
?
目前,我可以使用来搜索单个字段
http://127.0.0.1:8000/api/?name=Toyoto
如何修改以上链接以搜索多个字段? 如何修改上面的链接以搜索部分字母而不是精确字母?
您可以像下面那样传递所有params
http://127.0.0.1:8000/api/?name=Toyoto&speed=90&age=55
import requests
params = {'name': 'Toyoto', 'speed': '90', 'age': '95'}
url = 'http://127.0.0.1:8000/api/'
r = requests.get(url, params)
print(r.json())
filterset_class
from django_filters import rest_framework as filters
from .models import car
class CarFilter(filters.FilterSet):
name = filters.CharFilter(field_name="name", lookup_expr='icontains')
speed = filters.CharFilter(field_name="speed", lookup_expr='icontains')
age = filters.CharFilter(field_name="age", lookup_expr='icontains')
class Meta:
model = car
fields = ('name', 'speed', 'age')
class carListView(ListAPIView):
queryset = car.objects.all()
serializer_class = carSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = CarFilter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.