use*_*034 12 python django json django-rest-framework
我正在使用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一起运行良好?
小智 9
有一种简单的方法,只需通过添加订购行明确覆盖它:
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',)
Run Code Online (Sandbox Code Playgroud)
您不使用序列化器进行排序。您需要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 qs
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7814 次 |
| 最近记录: |