0

在这里是 Django 新手,在某人传递给我的代码的用户配置文件模型中找到了此功能,但我终生无法在文档中找到它,也无法在他的代码中的其他任何地方找到它。但是包括用户身份验证在内的一切似乎都有效,所以不确定这create_new_user_and_profile是从哪里来的?另外,不确定这是否是对用户的最佳方式,任何人都可以提供一些提示吗?

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

post_save.connect(create_user_profile, sender=User)


class UserProfile(models.Model):
    user = models.OneToOneField(User)
    office_number = models.IntegerField(null=True)

    def initialize_static_fields(self, office_number):
        user = models.OneToOneField(User)
        self.office_number = office_number

    def create_new_user_and_profile(username, email, password, office_number):
        u = User.objects.create_user(username, email, password)
        u.get_profile().initialize_static_fields(office_number)
4

1 回答 1

1

用户模型有一个 create_user 方法,但是默认情况下它不会创建配置文件,您可以在每次创建新用户时使用信号来创建配置文件,例如

def create_profile(sender, instance, created, **kwargs):
    profile = None
    if created:
        profile, created = Profile.objects.get_or_create(user=instance)

post_save.connect(create_profile, sender=User)

添加到模型中的方法是创建用户并触发 create_user_profile 的自定义方法,然后会补充额外的信息。IMO,此方法不应该是 CalscopeUserProfile 的一部分,并且可能属于(表单)视图(私有)或服务功能。

于 2012-09-21T08:20:11.053 回答