tutorial framework espaƱol create python json django django-rest-framework

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'',)