【问题标题】:Django - perform action on Profile while creating UserDjango - 在创建用户时对配置文件执行操作
【发布时间】:2021-04-11 04:10:27
【问题描述】:

我正在寻找解决我的问题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

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

【问题讨论】:

标签: python django django-class-based-views


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2019-05-23
    • 2020-07-23
    • 1970-01-01
    相关资源
    最近更新 更多