我正在使用由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框架,我想通过我的json订购我如何使用serializers.py文件中的django rest框架生成一个order_by我在serializers.py中有这个
class EstablecimientoSerializer(serializers.ModelSerializer):
class Meta:
model = Establecimiento
depth = 1
fields = ('nombre','ciudad',)
order_by = (
('nombre',)
)
Run Code Online (Sandbox Code Playgroud)
我有这个order_by,但这对JSON没有任何作用
在serializers.py的JSON中执行此顺序的正确方法是什么?
我有views.py
class EstablecimientoViewSet(viewsets.ModelViewSet):
queryset = Establecimiento.objects.order_by('nombre')
serializer_class = EstablecimientoSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('categoria','categoria__titulo',)
Run Code Online (Sandbox Code Playgroud)
然后order_by不起作用,因为我有这个过滤器,我怎么做才能使过滤器与order_by一起运行良好?
我无法使用 Django ORM 执行此查询。如何进行内部联接,如何执行此查询并仅返回我想要的列?
SELECT establecimiento.nombre, categoria.titulo
FROM establecimiento INNER JOIN
categoria ON establecimiento.categoria = categoria.id
Run Code Online (Sandbox Code Playgroud)