Django 在成功时将 url 反转为 onetoonefield

Django reverse url to onetoonefield on success

美好的一天!

最近我开始研究 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。但是,我无法弄清楚如何让它正常工作。你能在正确的方向上推动我如何处理这个问题吗?我无法匹配正确的 google 搜索词或找到任何解释或显示如何正确实现此目的的示例。

提前致谢!

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

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

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

profile.user

您还可以从用户

访问profile
user.profile

在您看来,self.object 是用户,因此 self.object.profile.id 将为您提供配置文件 ID。