オブジェクト クエリによって返されるモデル インスタンスごとに 1 つずつ、多数のフォームを表示するビューを作成したいと考えています。そうすれば、ユーザーは一度に複数のフォームに入力でき、すべてのオブジェクトのデータが に保存され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>
間違っている場合は訂正してください。ただし、私のコードが現在行っていることは次のとおりです。ユーザーがページ上のフォームに入力してボタンの 1 つをクリックすると、Submit
そのボタンに対応するフォームはSubmit
そのデータのみをビューに送信します。 、次にそのデータを のすべてのフォームに保存しform_list
、データベース内の対応するすべてのオブジェクトに同じデータを書き込みます (これは明らかに私が望んでいることではありません)。
私が望むのはSubmit
、ページ全体の単一のボタンのようなものです。これにより、ページ内の各フォームのデータが関連するフォームと共に返され、データベース内の適切な対応するオブジェクトに保存されます。これは可能ですか?