我是Django的新手,我有一个包含多个表单和提交按钮的页面。如果提交了其他表格,我如何将数据存储在其他表格的字段中?通常,当我提交一个时,它会重定向到同一页面,但是如果字段上输入的内容丢失了。 感谢。
这是Html
<head>
<title>Hello</title>
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}/static/tabs.css" />
</head>
<body>
<h1>Informacion</h1>
<ol id="toc">
<li><a href="#page-1"><span>Page 1</span></a></li>
<li><a href="#page-2"><span>Page 2</span></a></li>
<li><a href="#page-3"><span>Page 3</span></a></li>
<li><a href="#page-4"><span>Page 4</span></a></li>
</ol>
<div class="content" id="page-1">
<h2>Page 1</h2>
<p>Text...</p>
<form action="." method="POST">{% csrf_token %}
<table>
{{ form1.as_table }}
</table>
<p><input type="submit" value="Submit"></p>
</form>
</div>
<div class="content" id="page-2">
<h2>Page 2</h2>
<p>Text...</p>
<form action="." method="POST">{% csrf_token %}
<table>
</table>
<p><input type="submit" value="Submit"></p>
</form>
</div>
<div class="content" id="page-3">
<h2>Page 3</h2>
<p>Text...</p>
<form action="." method="POST">{% csrf_token %}
<table>
{{ form2.as_table}}
</table>
<p><input type="submit" value="Submit"></p>
</form>
</div>
<div class="content" id="page-4">
<h2>Busqueda</h2>
<form action="." method="POST">{% csrf_token %}
<table>
{{ form2.as_table}}
</table>
<p><input type="submit" value="S"></p>
</div>
<script src="{{ MEDIA_URL}}/static/activatables.js" type="text/javascript"></script>
<script type="text/javascript">
activatables('page', ['page-1', 'page-2', 'page-3','page-4']);
</script>
</body>
嗯,在java脚本中为每个不同的表单创建了一些选项卡,所以我想要做的是当你为一个表单提交数据时,应该保留其余表单的字段中的其他数据,所以用户不应该再次键入或丢失它。提前谢谢。
在视图中......
if request.method == 'GET':
form1 = HcGinecoForm()
form2 = HolaForm()
else:
form1 = HcGinecoForm(request.POST)
form2 = HolaForm(request.POST)
if form1.is_valid and form2.is_valid():
form1.save()
form2.save()
return render_to_response('polls/hola.html',{
'form2':form2,
'form1':form1
})
到目前为止工作......谢谢。
答案 0 :(得分:4)
为了从一个POST中保留多个表单中的值,您需要在一个表单中包含所有字段(不使用JavaScript)。
在您的视图操作中,您需要验证每个表单,然后调用它的保存方法。
def my_page(request):
if request.method == 'GET':
form1 = Form1()
form2 = Form2()
form3 = Form3()
else:
form1 = Form1(request.POST)
form2 = Form2(request.POST)
form3 = Form3(request.POST)
if form1.is_valid() and form2.is_valid() and form3.is_valid():
form1.save()
form2.save()
form3.save()
return render_to_response('my_page.html',
{'form1' : form1, 'form2' : form2, 'form3' : form3})
发布到此操作时,将在帖子后保留输入任何这些表单的值。如果您希望不保留这些值,则需要创建未从request.POST集合中填充的表单的新实例。
答案 1 :(得分:0)
Jaime,请发布一些代码段。
如果您有不同的<form></form>
元素,那么您实际上并没有从其他<form>
向服务器传递任何POST数据,因此无法保留该数据。
考虑将您的表单合并到一个<form>
块中。
使用多个django表单,您可以通过使用表单构造函数的prefix
参数来确保没有名称冲突。
前缀:http://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms