gpt4 book ai didi

Django - 如何将表单实例从一个 View 传递到另一个 View

转载 作者:行者123 更新时间:2023-12-05 03:00:00 25 4
gpt4 key购买 nike

我有一个包含多个步骤的表单。第一部分使用 forms.ModelForm,完成后,用户将被重定向到另一个包含 forms.Form 的 View 。

理想情况下,我希望仅在辅助表单有效时才保存第一个表单,如果是这种情况,则同时保存它们。

我通常使用 self.request.session 将数据从一个 View 传递到另一个 View ,但是表单的实例不可序列化,因此不能将其附加到 session 中。

举个例子:

FirstView 包含带有字段('firstname', 'lastname')的 FirstForm

SecondView 包含带有字段 ('address', 'gender') 的 SecondForm

If FirstForm and SecondForm is valid
form1.save
form2.save

有人有什么建议吗?谢谢。

最佳答案

好吧,您可以将表单的 cleaned_data 存储在 django session 中,并将其作为初始值传递给另一个表单。例如:

def first_view(request):
form = FirstForm(request.POST)
if form.is_valid():
request.session['first_form'] = form.cleaned_data
return redirect('to_second_view')

def second_view(request):
form = SecondForm(request.POST)
if form.is_valid():
first_form_data = request.session.pop('first_form',{})
first_form_instance = FirstFormModel.objects.create(**first_form_data)
second_form_instance = form.save()
# rest of the code...

关于Django - 如何将表单实例从一个 View 传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57368202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com