我想編寫一個視圖,該表單顯示多個表單,每個表單對應於由對象查詢返回的每個模型實例。這樣用戶可以一次填寫多個表單,然後所有對象的數據都會保存在POST
上。下面是我有:Django多表單提交:覆蓋所有表單對象的一種表單
查看:
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
按鈕,以便頁面中每個表單的數據都以其關聯的形式發回並保存到數據庫中相應的對應對象。這可能嗎?
瀏覽器將只發送表格提交按鈕與相關的,它不會提交別人。這只是W3C瀏覽器的行爲。因此,每個'