2016-09-05 13 views
3

Serializer.pyPUTリクエストは

class CategorySerializer(serializers.ModelSerializer) : 
    id = serializers.IntegerField(source='category_id') 
    name = serializers.CharField(source='category_name') 

    class Meta: 
     model = Category 
     fields = ['id', 'name'] 

以上がGETのために正常に動作しますが、私はPUTリクエストを実行すると、それはPUT

request.method == 'PUT': 
     serializer = CategorySerializer(category, data=request.data) 
     if serializer.is_valid(): 
      serializer.save() 
      response = { 
       'status': status.HTTP_200_OK, 
       'message' : "Category Updated", 
      } 
      return HttpResponse(json.dumps(response), content_type='application/json') 
     else : 
      response = { 
       'status': status.HTTP_400_BAD_REQUEST, 
       'message' : "Category not found", 
      } 
      return HttpResponse(json.dumps(response), content_type='application/json') 
用ブロック

views.pyを失敗に行くの名前を変更するフィールドに失敗しました

私は次のカールを実行しています

curl -X PUT http://localhost:8000/api/add-category/4/ -d "category_name = x YZ」

応答:

{"status": 400, "message": "Category not found"} 

それは他の部分に行くたびに。

専門家は、私がid分野での問題は、それが必要だと思う

答えて

2

あなたのシリアライザのエラーを添付していなかったが、あなたはPUTリクエストメソッドのpartial引数を設定するべきであるように見えます。試してみてください

serializer = CategorySerializer(category, data=request.data, partial=True) 

ドキュメントlink

0

を助けてください。しかし、nameフィールドのみを送信しました。partialキーを使用してみてください。

serializer = CategorySerializer(category, data=request.data, partial=True) 
関連する問題