首页 文章

Django成功反击onetoonefield

提问于
浏览
0

美好的一天!

最近我开始研究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 回答

  • 2

    当您为用户模型创建one to one field时,

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

    您可以从配置文件中访问该用户

    profile.user
    

    您还可以从用户访问 profile

    user.profile
    

    在您的视图中, self.object 是用户,因此 self.object.profile.id 将为您提供 Profiles ID .

相关问题