Django UserProfile signals创建用户,名字,姓氏

2024-04-25 17:17:09 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用用户数据创建一个UserProfile时,我想传递给first\u name和last\u name。你知道吗

这是我的型号.py你知道吗

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    first_name = models.CharField(max_length=200, blank=True, null=True, default=None)
    last_name = models.CharField(max_length=200, blank=True, null=True, default=None)

def post_save_user(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)


post_save.connect(post_save_user, sender=settings.AUTH_USER_MODEL)

我用UserProfile.objects.create(user=instance, first_name=instance.first_name, last_name=instance.last_name)尝试过,它创建了配置文件,但没有添加名字和姓氏。你知道吗

问题:如何使用用户数据将名字和姓氏添加到配置文件中?你知道吗


Tags: 数据instance用户nameauthtruesettingsmodels
1条回答
网友
1楼 · 发布于 2024-04-25 17:17:09

你不指望会有魔法发生,是吗?尝试用以下方式扩展信号接收器:

def post_save_user(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(
            user=instance,
            first_name=instance.first_name,
            last_name=instance.last_name,
        )

但是,老实说,这个答案属于垃圾桶:正如@danielroseman已经指出的,您存储了多余的数据。如果您真的希望有一个单独的UserProfile模型,请考虑将first_namelast_name设为@property(可能与@_.setter)并使用auth.User模型中存储的数据进行操作。你知道吗

相关问题 更多 >