【发布时间】:2020-11-14 20:54:09
【问题描述】:
我对 Django 和 DRF 比较陌生,我创建了一个序列化程序并定义了一个更新方法来覆盖默认值,但是当我在邮递员中测试它时,它只返回用户数据中的字符串,代码示例如下。
'serializers.py'
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'password']
类 AgentSerializer(ModelSerializer): 用户 = 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)
'邮递员测试'
{“用户”:{ "用户名":"测试用户名", "first_name": "testfirstname", "last_name":"testlastname", "电子邮件":"test@test.com", “密码”:“秘密” }, “电话”:“1111”, "公司":"1"}
'邮递员结果'
"user": {
"username": "['username']",
"first_name": "['first_name']",
"last_name": "['last_name']",
"email": "['email']",
"password": "['password']"
},
"phone": 1111,
"company": 1
我做错了什么?
【问题讨论】:
标签: python django serialization django-rest-framework postman