2016-09-05 2 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을 위해 블록을

views.py 실패로 전환

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

나는 뒤틀린 채 달리고있다.

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

응답 : 다른 부분에 간다

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

때마다.

전문가

답변

2

당신은 당신의 시리얼 오류를 부착하지 않은,하지만 당신은 PUT 요청 방법 partial 인수를 설정해야하는 것 같습니다. 시도

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

문서 link

0

내가 id 필드 문제를 생각 도와주세요, 그것은 필요합니다. 그러나 name 필드 만 보냈다면 partial 키를 사용해보십시오.

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