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。
美好的一天!
最近我开始研究 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。