i'm relatively new to Django & DRF, i created a serializer and defined an update method to override the default one, but when i test it in postman it returns just the strings in user data, code sample below.
'serializers.py'
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'password']
class AgentSerializer(ModelSerializer): user = UserSerializer()
class Meta:
model = Agent
fields = ['user', 'phone', 'company']
def create(self, validated_data):
user = validated_data.pop('user')
new_user = User.objects.create(**user)
agent = Agent.objects.create(user=new_user, company=validated_data['company'], phone=validated_data['phone'])
return agent
def update(self, instance, validated_data):
user = validated_data.pop('user')
user = instance.user
user.username = ['username']
user.first_name = ['first_name']
user.last_name = ['last_name']
user.email = ['email']
user.password = ['password']
user.save()
validated_data['user'] = User.objects.get(id=user.id)
return super(AgentSerializer, self).update(instance, validated_data)
'postman test'
{"user": { "username":"testusername", "first_name": "testfirstname", "last_name":"testlastname", "email":"[email protected]", "password": "secret" }, "phone":"1111", "company":"1"}
'postman result'
"user": {
"username": "['username']",
"first_name": "['first_name']",
"last_name": "['last_name']",
"email": "['email']",
"password": "['password']"
},
"phone": 1111,
"company": 1
What im i doing wrong?