Django rest框架一对一关系创建串行器

Django rest框架一对一关系创建串行器

问题描述:

我是Django Rest Frame工作的初学者。我想创建一个自定义用户,但长期以来我有一个问题,我尝试通过许多论坛来寻找解决方案,但不幸的是,我没有成功。希望大家帮我Django rest框架一对一关系创建串行器

models.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) 

Serializers.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实例。

希望有所帮助。

+0

问题修复:)谢谢你 – asus1902