Alexey K
Alexey K

Reputation: 6723

Django - serializer returns update data but don't modify db

I have following serializer:

class ProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()

class Meta:
    model = Profile
    fields = (
        'pk',
        'user',
        'isAdmin',
        'isAccountant',
        'isAuditor',
        'isManager'
    )

def update(self, instance, validated_data):
    instance.isAdmin = validated_data['isAdmin']
    instance.isAccountant = validated_data['isAccountant']
    instance.isAuditor = validated_data['isAuditor']
    instance.isManager = validated_data['isManager']

    user = validated_data.pop('user')   

    u = User.objects.get(email=user['email'])

    u.first_name = user['first_name']
    u.last_name = user['last_name']
    u.username = user['email']
    u.email = user['email']

    u.save()

    return instance

when I send PUT request, in response I get updated data. But in database it remains the same.

What am I doing wrong ?

Upvotes: 0

Views: 22

Answers (1)

Linovia
Linovia

Reputation: 20976

You don't save instance:

def update(self, instance, validated_data):
    instance.isAdmin = validated_data['isAdmin']
    instance.isAccountant = validated_data['isAccountant']
    instance.isAuditor = validated_data['isAuditor']
    instance.isManager = validated_data['isManager']
    instance.save()

    user = validated_data.pop('user')   

    u = User.objects.get(email=user['email'])

    u.first_name = user['first_name']
    u.last_name = user['last_name']
    u.username = user['email']
    u.email = user['email']

    u.save()

    return instance

Upvotes: 1

Related Questions