我正在使用由Django rest框架制作的API,我正在尝试对JSON进行过滤这是我的 serializers.py文件
from rest_framework import serializers
from .models import Establecimiento,Categoria,Ciudad,Zona
import django_filters
class EstablecimientoSerializer(serializers.ModelSerializer):
class Meta:
model = Establecimiento
depth = 1
fields = ('nombre',
'ciudad',
'categoria',
'direccion',
'telefono',
'precioMinimo',
'precioMaximo',)
Run Code Online (Sandbox Code Playgroud)
这是我的views.py档案
from rest_framework import viewsets
from .serializers import EstablecimientoSerializer, CategoriaSerializer
from models import *
from rest_framework import filters
from rest_framework import generics
class EstablecimientoViewSet(viewsets.ModelViewSet):
queryset = Establecimiento.objects.all()
serializer_class = EstablecimientoSerializer
filter_fields = ('categoria',)
Run Code Online (Sandbox Code Playgroud)
然后在EstablecimientoViewSet课堂上,我用一个filter_fields = ('categoria',)
用类别字段过滤url的API
如果我将过滤器添加到查询参数中,结果集不会更改,它会显示未过滤的所有数据.
...establecimiento?establecimiento=bar
Run Code Online (Sandbox Code Playgroud)
如何对此模型进行过滤?
我正在使用Django rest framework API,我正在尝试通过first_name或last_name或两者都进行过滤。这是我的ContactViewSet.py:
class ContactViewSet(viewsets.ModelViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
filter_backends = (DjangoFilterBackend, )
filter_fields = ('first_name', 'last_name')
lookup_field = 'idContact'
Run Code Online (Sandbox Code Playgroud)
我的DRF设置:
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
}
Run Code Online (Sandbox Code Playgroud)
我的actuel请求网址如下所示:
http://localhost:8000/api/v1/contacts/?first_name=Clair&last_name=Test
Run Code Online (Sandbox Code Playgroud)
但是我正在寻找这样的东西:
http://localhost:8000/api/v1/contacts/?first_name=Cl**&last_name=Tes**
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激 ..