2017-01-12 9 views
1

serializers.ListFieldで注文するにはどうすればViewSetで注文できますか?シリアライザによる注文方法.ListField on Django Rest Framework

class FooSerializer(serializers.ModelSerializer): 
    bar = serializers.ListField() 

私はあなたが、listメソッドをオーバーライドするクエリセットを評価して、あなたのキーでそれを並べ替えることができ、リストの拳要素によって

GET http://localhost:8000/api/foo?ordering=bar[0] 

{ 
    ... 
    results: [{bar:[1,'a']},{bar:[2,'c']},{bar:[3,'d']}] 
    ... 
} 
+0

注文?例えば、 – shuboy2014

+0

。 –

答えて

1

を注文したい:どのような視点で

class FooViewSet(viewsets.ModelViewset): 
    queryset = Foo.objects.all() 
    serializer_class = FooSerializer 

    def list(self, request, *args, **kwargs): 
     order = request.query_params.get('ordering') 
     q = self.get_queryset() 
     serializer = self.get_serializer(q, many=True) 
     sorted_q = sorted(serializer.data, key=lambda x: x['bar'][0]) 
     return Response(sorted_q) 
+0

これは注文のタイプIを確認しません。私はGETリクエストでリクエストしています。また、ビューセットの代わりにシリアライザで注文しています –

+0

@JulioMarinsあなたは 'GET'パラメータについて何も言わないで、それについて考えてみましょう –

+0

あなたはそうです、私に教えてくださいそれを書き直す。申し訳ありません –

関連する問題