【发布时间】:2021-04-06 06:14:12
【问题描述】:
我有一个收集用户数据并将其保存到后端的视图。
def register(request):
if request.method == 'POST':
form = UserSignUpForm(request.POST)
if form.is_valid():
form.save()
print("REQUEST", request.user)
request.session['user'] = request.user.id
return redirect('additional_info')
else:
form = UserSignUpForm()
return render(request, 'users/signup.html', {'form': form})
完成后,我会将用户重定向到另一个页面,他们可以在其中以另一种形式为他们的个人资料提供其他信息,例如他们的出生日期、个人资料图片等。
这对视图使用以下代码:
def additionalInfo(request):
if request.method == 'POST':
form = ProfileForm(request.POST)
user = request.session.get('user')
if form.is_valid():
profile = Profile()
profile.dob = request.POST.get('dob')
profile.User = user
profile.save()
return redirect('app-home')
else:
form = ProfileForm()
return render(request, 'users/addInfo.html', {'form': form})
问题是当我尝试保存第二个表单时出现异常:
NOT NULL constraint failed: users_profile.user_id
我猜这是因为我在 Profile 模型中定义了这个:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
意思是我需要提供user,我想为它创建这个profile。如何获取刚刚使用register 视图注册的user 的信息并使其在additionalInfo 视图中可用?
【问题讨论】:
标签: python django django-forms django-users