Django Rest Framework中的列表反序列化

4

我正在尝试实现一个RESTful Web服务。 一切都进行得很顺利,直到我尝试从POST请求反序列化包含对象的列表时出现问题。我的代码如下:

#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)

The curl command i use to test is:

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/

我已经测试了我的代码(不包括索引),使用简单的post请求是可以正常工作的。但是当我尝试提交一个列表时,就无法正常工作。 然而,在尝试在shell中运行代码(python manage.py shell)后,我注意到框架代码中有一个TODO:

# TODO: error data when deserializing lists

代码有问题吗?有什么建议可以提供吗?在最终版本中,用户将发布像以下这样的字符串,但我会逐步实现它:

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

如果我能掌握列表,我就能处理那种类型的JSON。
1个回答

1

1
谢谢。我通过从头开始编写视图解决了我的问题。也许以后我会尝试找到一个更好的解决方案。不过,你对这个框架的工作做得很好! - geompalik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接