如何使用Django会话让用户能够在一个页面上启动一个表单,并移动到下一页并让他们完成表单?Django 1.9以两种页面形式使用django会话
我已经看过分页和向导的形式,但我没有得到它们。
当我有一个页面模型的一小部分我使用 - 在表单 - 另一个页面与模型的其余部分 - forms.py
与其余的模型信息 - 我可以完美地使用第一个形式。
但是当我移动到下一页时,出现错误,说(1048, "Column 'user_id' cannot be null")
。
我最好的猜测是使用Django会话来解决这个问题。我不希望用户必须再次输入用户名和密码才能使其工作。有任何想法吗?
我的模型/ forms.py:
class Contact(models.Model):
user = models.OneToOneField(User)
subject = models.CharField(max_length=100, blank=True)
sender = models.EmailField(max_length=100, blank=True)
message = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.user.username
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = Contact
fields = ('username', 'password', 'email')
class ContactForm1(forms.Form):
class Meta:
model = Contact
fields = ('subject', 'sender')
class ContactForm2(forms.Form):
message = forms.CharField(widget=forms.Textarea)
class Meta:
model = Contact
fields = ('message',)
观点:
def contact(request):
registered = False
if request.method =='POST':
user = UserForm(request.POST)
contact = ContactForm1(request.POST)
if user.is_valid() and contact.is_valid():
user = user.save()
user.set_password(user.password)
user.save()
contact = contact.save(commit=False)
contact.user = user
registered = True
return render(request, 'mysite/contact.html', {'user': user, 'contact': contact, 'registered': registered})
def contact_second(request):
if request.method =='POST':
contact = ContactForm2(request.POST)
if contact.is_valid():
contact = contact.save(commit=False)
contact.save()
return render(request, 'mysite/contact_two.html', {'contact': contact}
我会把这两个意见?我不知道如何从一个视图发送到另一个视图?我已经在上面添加了我的文件。谢谢! – Robby
@Robby我已经更新了我的答案。 – Rafael
我几乎拥有它。我打印出request.session并从第1页看到了我所得到的。这一切看起来完全像我所需要的。只有我不知道如何在第二页使用它来获取user_id。我试过'profile.user = first_page_data ['form_data_page_1']',但它没有奏效。谢谢你的帮助。我对此很陌生并且很挣扎。 – Robby