我是Django Rest Frame工作的初学者。我想创建一个自定义用户,但我有一个问题,从很长一段时间我试图通过许多论坛找到解决方案,但不幸的是我没有成功。希望你帮助我
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
答案 0 :(得分:3)
你的问题在这里:
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()
提供正确的数据来创建用户实例,就可以解决问题。
希望有所帮助。