python - framework - Marco django rest, order_by un JSON del archivo serializers.py
django rest framework response (2)
Estoy trabajando con el marco de trabajo django y quiero hacer un pedido a mi json. Cómo puedo hacer un pedido_por el framework django rest del archivo serializers.py Tengo esto en serializers.py
class EstablecimientoSerializer(serializers.ModelSerializer):
class Meta:
model = Establecimiento
depth = 1
fields = (''nombre'',''ciudad'',)
order_by = (
(''nombre'',)
)
Tengo este order_by pero esto no hace nada con el JSON
¿Cuál es la forma correcta de hacer este pedido en el JSON de serializers.py?
Tengo en views.py
class EstablecimientoViewSet(viewsets.ModelViewSet):
queryset = Establecimiento.objects.order_by(''nombre'')
serializer_class = EstablecimientoSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = (''categoria'',''categoria__titulo'',)
Entonces el orden_por no funciona porque tengo este filtro, ¿Cómo puedo hacer para que el filtro funcione bien con order_by?
No usa el serializador para ordenar. Necesitas usar el atributo queryset
en tu vista así:
class EstablecimientoListView(generics.ListCreateAPIView):
queryset = Establecimiento.objects.order_by(''nombre'')
serializer_class = EstablecimientoSerializer
def filter_queryset(self, request, queryset, view):
qs = super(EstablecimientoListView, self).filter_queryset(request, queryset, view)
qs = qs.order_by(''nombre'')
return qs
Hay una manera fácil, simplemente anularla explícitamente agregando una línea de pedido:
class EstablecimientoViewSet(viewsets.ModelViewSet):
queryset = Establecimiento.objects
serializer_class = EstablecimientoSerializer
filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter)
ordering = (''nombre'',) #add this line
filter_fields = (''categoria'',''categoria__titulo'',)