Search code examples
pythondjangodjango-rest-frameworkdjango-serializer

how to update model object's , only one field data when doing serializer.save() in django rest framework?


so heres my serializer class:


class HeroSerializer(serializers.ModelSerializer):
    class Meta:
        model=Hero
        fields=['id','name','secret_identity']

and my view :

@api_view(['PUT', ])
def api_hero_update(request, name):
    try:
        character = Hero.objects.get(name=name)
    except:
        return Response(status=status.HTTP_404_NOT_FOUND)
    serializer = serializers.HeroSerializer(character, data=request.data)
    message={}
    if serializer.is_valid():
        serializer.save()
        print(serializer.data)
        message["success"]="Update Successful"
        return Response(data=message)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

Let a model object has fields name and secret_identity. and i want to update its name only but the line

serializer = serializers.HeroSerializer(character, data=request.data)

doesnt allow me to update only , one field . how to update only one field?


Solution

  • you have to add partial=True attribute to serializer object. i.e. use this

    serializer = serializers.HeroSerializer(character, data=request.data, partial=True)