Django Rest框架创建和更新用户配置文件

wribegjk  于 2022-12-01  发布在  Go
关注(0)|答案(1)|浏览(119)

我正在构建一个DRF项目,并使用django-allauthdjango-rest-auth启用了用户身份验证和注册。通过提供用户名、电子邮件、密码1和密码2注册了一个新用户。
我想在创建用户时创建一个用户配置文件,但是他必须在注册时输入任何与配置文件相关的内容。用户可以在以后随时编辑此配置文件。我的用户配置文件模型:

class Profile(models.Model):
    user = models.OneToOneField(User, blank=True, on_delete=models.CASCADE, )
    name = models.CharField(max_length=50, blank=True, )
    age = models.IntegerField(blank=True, )
    ...
    ...

在www.example.com上serializers.py我有:

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'

我看到一些帖子,其中添加了以下方法的配置文件模型:

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

使用它们,用户被创建,但配置文件没有被创建,我得到错误IntegrityError: (1048, "Column 'age' cannot be null")
创建和更新此类配置文件的最佳方式是什么?

zzwlnbp8

zzwlnbp81#

消除IntegrityError更改
发件人:
用户=模型.一对一字段(用户,空白=真,on_delete=模型.级联,)修改为:
用户=型号.外键(用户,空白=真,on_delete=型号.CASCADE,)
但是,我不知道这种关系是否符合您要求

相关问题