我正在使用django rest框架,我想对我的json进行排序,我可以从serializers.py中的serializers.py文件中使用django rest框架创建一个order_by
class EstablecimientoSerializer(serializers.ModelSerializer):
class Meta:
model = Establecimiento
depth = 1
fields = ('nombre','ciudad',)
order_by = (
('nombre',)
)我有这个order_by,但它与JSON无关。
在serializers.py的JSON中执行此order by的正确方法是什么?
我在views.py中有
class EstablecimientoViewSet(viewsets.ModelViewSet):
queryset = Establecimiento.objects.order_by('nombre')
serializer_class = EstablecimientoSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('categoria','categoria__titulo',)因为我有这个过滤器,所以order_by就不能工作了,我该怎么做才能让这个过滤器在order_by中很好地工作呢?
发布于 2014-04-22 17:46:55
有一个简单的方法,只需通过添加一个排序行来显式覆盖它:
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',)发布于 2014-02-06 20:14:04
您不需要使用序列化程序进行排序。您需要在视图中使用queryset属性,如下所示:
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 qshttps://stackoverflow.com/questions/21594393
复制相似问题