Django成功转发onetoonefield的网址

时间:2015-11-25 22:01:53

标签: python django url one-to-one

美好的一天SO!

最近我开始研究Django,我找到了一个无法在网上找到正确解决方案的情况。所以我对成功的URL反转有一点疑问。目前,当用户成功创建帐户时,用户将根据刚刚创建的user_id反转为配置文件:

class Create(CreateView):
    form_class = UserCreateForm  # inherits from django's UserCreationForm

    def get_success_url(self):
        return reverse('users:profile', kwargs={'pk': self.object.pk})

这是正常的。现在我使用OneToOneField创建了一个配置文件模块 到django.auth.models用户模型。创建新帐户时,会向create_profile_on_registration方法发送信号。

@receiver(post_save, sender=User)
def create_profile_on_registration(sender, created, instance, **kwargs):
    ...

这也正常工作,会在用户帐户注册时创建新的配置文件。现在我想将用户转换为新创建的profile_id而不是user_id。但是,我无法弄清楚如何正确地使用它。你能否就如何解决这个问题向我提出正确的方向?我无法匹配正确的谷歌搜索词或找到任何解释或说明如何正确实现此目的的示例。

提前致谢!

1 个答案:

答案 0 :(得分:2)

为用户模型创建one to one field

class Profile(models.Model):
    user = models.OneToOneField(User)

您可以从个人资料中访问该用户

profile.user

您还可以从用户

访问profile
user.profile

在您看来,self.object是用户,因此self.object.profile.id会为您提供个人资料ID。