Запрос PUT не работает при переименовании поля

Serializer.py

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, он переходит в блок сбоя

views.py для 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') 

И я бегу за скручиванием

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

Отклик:

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

Каждый раз, когда он идет в другом месте.

Эксперты помогут

Вы не приложили свои ошибки сериализатора, но похоже, что вы должны установить partial аргумент для метода запроса PUT . Пытаться

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

Ссылка на документацию

Я думаю, проблема с полем id , это необходимо. Но вы отправили только поле name , попробуйте использовать partial ключ.

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