我有注册新用户的模型AuthCustomUser(AbstractUser)
。它将保存登录所需的数据,例如:名称、电子邮件和密码
另一方面,我有一个MetaUser (models.Model)
模型,我将使用它作为用户的附加信息,例如:地址,电话等
我想在用户注册结束时创建两个模型之间的关系
在模型MetaUser(models.Model)
中,我有一个外键:
user = models.ForeignKey (settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
当用户注册时,数据将被输入到模型AuthCustomUser (AbstractUser)
,然后我想在模型MetaUser (models.Model)
中插入用户的ID,以建立两个模型之间的外键关系。最后,用户将在完成注册后立即启动会话,并将获得home.html
的访问权限
这些是我的模型:
class MetaUser(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
screen_orientation = models.CharField(default='landscape', max_length=9)
def __str__(self):
return self.name
class AuthCustomUser(AbstractUser):
def __str__(self):
return self.name
以下是我对注册处的看法:
class SignUp(generic.CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
def form_valid(self, form):
form.save()
username = self.request.POST['username']
password = self.request.POST['password1']
user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'],)
login(self.request, user)
if self.request.user.is_authenticated:
metaUser = MetaUser(user=self.request.user.id)
metaUser.save()
else:
return render(self.request, 'home.html', {})
我无法在注册时将ID插入外键字段
当然你可以有用户id。你可以这样做:
另外,您需要确保新创建的用户是否处于活动状态,否则authenticate将不会返回user对象。为了确保用户处于活动状态,可以重写ModelManager中的
create_user
方法。例如:另外,最好使用不同的视图来呈现主页。例如:
相关问题 更多 >
编程相关推荐