Python Django rest框架一对一关系创建序列化程序

Python Django rest框架一对一关系创建序列化程序,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我是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.p

我是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)
序列化程序.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
错误: 您的问题在于:

   user_data = validated_data.pop('user')
   account = Account.objects.create(**validated_data)
   User.objects.create(account=account, **user_data)
您正在尝试在创建用户之前创建一个帐户,这将不起作用,因为帐户需要
User\u id
的值。如果您的用户模型具有帐户的外键,而不是相反的方式,那么首先创建帐户将是正确的方法

切换到:

   user_data = validated_data.pop('user')
   user = User.objects.create(**user_data)
   account = Account.objects.create(user=user, **validated_data)
只要
UserListSerializers()
提供正确的数据来创建用户实例,就应该解决此问题

希望有帮助