gpt4 book ai didi

python - Django Rest框架一对一关系创建序列化器

转载 作者:行者123 更新时间:2023-11-30 22:49:35 25 4
gpt4 key购买 nike

我是 Django Rest Frame 工作的初学者。我想创建一个自定义用户,但长期以来我遇到了一个问题,我尝试通过许多论坛找到解决方案,但不幸的是我没有成功。希望你能帮助我

模型.py

class Account(models.Model):

user=models.OneToOneField(User,on_delete=models.CASCADE)
image=models.ImageField(upload_to='Images/',default='Images/user.png')
date=models.DateField(auto_now=True,auto_now_add=False)

序列化器.py

 class AccountCreateUpdateSerializer(serializers.ModelSerializer):


user=UserListSerializers()
image=serializers.ImageField()

class Meta:
model= Account
fields=['id','user','image']
def create(self,validated_data):
user_data=validated_data.pop('user')
account=Account.objects.create(**validated_data)
User.objects.create(account=account,**user_data)

return account

错误: enter image description here

最佳答案

您的问题在这里:

   user_data = validated_data.pop('user')
account = Account.objects.create(**validated_data)
User.objects.create(account=account, **user_data)

您尝试在创建用户之前创建帐户,但这不起作用,因为帐户需要 user_id 值。如果您的用户模型有帐户的外键,而不是相反,那么首先创建帐户将是正确的方法。

切换到:

   user_data = validated_data.pop('user')
user = User.objects.create(**user_data)
account = Account.objects.create(user=user, **validated_data)

只要您的 UserListSerializers() 提供正确的数据来创建 User 实例,就应该解决该问题。

希望有帮助。

关于python - Django Rest框架一对一关系创建序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39690267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com