4

RESTful Web サービスを実装しようとしています。投稿リクエストからのオブジェクトでリストを逆シリアル化しようとするまで、すべてがうまくいっていました。私のコードはこれです:

#serializers.py
class ResultSerializer(serializers.ModelSerializer):
        class Meta:
            model=test_result
            fields=('id', 'label')

#views.py
class results(APIView):
    """
    Post the results for a test set.
    """
    permission_classes = (permissions.IsAuthenticated,)

    def post(self, request, pk, format=None):
        ser=ResultSerializer(data=request.DATA)
        for i in range(len(ser.data)): 
            if ser.data[i].is_valid():      
            entry=test_result(user=User.objects.get(username=request.user.username), test_id=Detail.objects.get(test_id=pk), id=Article.objects.get(id=ser.data[i]['id']), label=ser.data[i]['label'])
            entry.save() #I use a test_result table in my database to save things   
            return Response(ser.data[i], status=status.HTTP_201_CREATED)    
        return Response(ser.errors, status=status.HTTP_400_BAD_REQUEST)

テストに使用するcurlコマンドは次のとおりです。

curl -v -H "Accept: application/json" -H "Content-type: application/json" --user plao:1234 -X POST -d '[{"id":23401853, "label":1504}, {"id":23401853, "label":1505}]' http://127.0.0.1:8000/tests/uploadResults/1/

簡単な投稿でコードを(インデックスなしで)テストしましたが、正常に動作します。しかし、リストを投稿しようとするとできません。ただし、シェル ( python manage.py shell) でコードを試した後、フレームワークのコードに TODO があることに気付きました。

# TODO: error data when deserializing lists

コードに問題はありますか?使用できるアドバイスはありますか?最終バージョンでは、ユーザーは次のような文字列を投稿しますが、私は段階的に到達しようとしています:

{"documents": [{"id":[Label1,...,LabelN]},....,{"id":[Label1,..,LabelM]}]}

リストを処理できれば、そのような json を扱えるようになります。

4

1 に答える 1

1

おそらく、一括更新を扱っているディスカッション グループの次のスレッドを参照する必要があります。

https://groups.google.com/forum/#!topic/django-rest-framework/uJA1kuUO9gc/discussion

于 2013-02-19T13:32:25.007 に答える