Django在创建用户时对配置文件执行操作

2024-04-29 11:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为我的问题寻找解决办法,但它没有解决我的问题

我想在用户注册时创建其个人资料。 要注册,我使用CreateView

class UserRegisterView(generic.CreateView):
    form_class = SignUpForm
    template_name = 'registration/register.html'
    success_url = reverse_lazy('login')

    #this method doesn't work and I get 
    # `Profile.user" must be a "User" instance`

    def form_valid(self,form):
        Profile.objects.create(user=self.request.user)

我的个人资料模型如下所示:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    #rest of fields like bio, social urls etc

我的主要观点是在用户创建帐户时自动创建用户的配置文件。 解决这个问题的最好办法是什么


Tags: 用户selfformmodelsprofilegenericclass用户注册
1条回答
网友
1楼 · 发布于 2024-04-29 11:33:11

我建议避免使用信号,因为你有一个表格

self.request.user仅当用户使用任何形式的身份验证(会话、令牌等)登录时才会返回用户对象

def form_valid(self,form):
    user = form.save()
    Profile.objects.create(user=user)
    return super(UserRegisterView, self).form_valid(form)

相关问题 更多 >