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

Django - perform action on Profile while creating User

我正在为我的问题寻找解决方案 here,但它并没有解决我的问题。

我想在用户注册时创建用户个人资料。 要注册,我使用 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

我的主要观点是在用户创建帐户时自动创建用户个人资料。 解决此问题的最佳方法是什么?

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

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

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