我想编写一个显示多个表单的视图,一个用于对象查询返回的每个模型实例。这样,用户可以一次填写多个表格,然后将所有对象的数据保存在POST
. 这是我所拥有的:
看法:
def formView(request, attr):
object_list = MyModel.objects.filter(attribute1=attr)
if request.method == 'POST':
form_list = [MyModelForm(request.POST, instance=x) for x in object_list]
if all(form.is_valid for form in form_list):
for form in form_list:
form.save()
return HttpResponseRedirect('/thanks/')
else:
form_list = [MyModelForm(instance=x) for x in object_list]
return render(request, 'formView.html', {'form_list':form_list})
HTML:
<table>
<thead>
<tr>
<th>Field1</th>
<th>Field2</th>
<th>Field3</th>
</tr>
</thead>
<tbody>
{% for form in form_list %}
<tr>
<form method="post">{% csrf_token %}
{% for field in form %}
<td>{{ field }}</td>
{% endfor %}
<td><input type="submit" value="Submit" /></td>
</form>
</tr>
{% endfor %}
</tbody>
</table>
如果我错了,请纠正我,但这是我认为我的代码当前正在执行的操作:当用户填写页面上的表单然后单击其中一个Submit
按钮时,与该按钮对应的表单Submit
仅将其数据发送到我的视图,然后继续将该数据保存到form_list
,从而将相同的数据写入我的数据库中的所有相应对象(这显然不是我想要的)。
我想要的是Submit
整个页面的单个按钮,以便页面中每个表单的数据与其关联的表单一起发送回并保存到数据库中相应的相应对象。这可能吗?