2013-02-18 103 views
4

我試圖實現一個RESTful Web服務。 一切都很順利,直到我試圖從一個post請求反序列化對象列表。我的代碼是這樣的:Django在rest框架中列出反序列化

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

我已經測試我的代碼(沒有索引)用簡單的崗位上工作得很好。但是當我嘗試發佈一個列表時,我不能。 然而,在shell試圖代碼後(python manage.py shell)我注意到,有在該框架的代碼TODO:

# TODO: error data when deserializing lists 

是否存在與代碼中的問題?有什麼建議可以使用嗎?在最終版本的用戶將發佈字符串類似下面的一個,但我儘量去實現它一步一步:

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

如果我能處理列表我就能hanble那種JSON的。

回答

相關問題