0

人々がレコードを作成できるようにする Django アプリケーションがあります。レコードには 1 人以上の人を含めることができ、フォームには既定で、人の名前を取得するための 3 つのフィールドが含まれています。1 つはファースト ネーム、1 つはミドル ネームのイニシャル、もう 1 つはラスト ネームです。ユーザーがレコードを作成している場合、プラス ボタンをクリックしてユーザーを追加できます。プラス ボタンは、別の 3 つのテキスト ボックスのセットを追加します。これは、追加したい人数に対して行うことができます。

プラス ボタンをクリックすると、各行の横にマイナス ボタンが表示されるので、必要に応じてそれらのフィールドを削除できます。

すべてのテキスト フィールドを取得し、アプリケーションのバックエンドで反復できるように、テキスト フィールドに名前を付ける最良の方法は何ですか?

それらにすべて同じ名前を付けると、名前の配列が得られると思いました。

request.POST.getlist('firstname')

しかし、そうではありません。代わりに、その名前の最後の入力フィールドから値を取得します。

任意の提案をいただければ幸いです。

4

1 に答える 1

0

これを再発明するのではなく、フォームセットを確認することをお勧めします。

https://docs.djangoproject.com/en/dev/topics/forms/formsets/

from django.forms.formsets import formset_factory

FormSet = formset_factory(MyForm, extra=2)
formset = FormSet()
print formset.forms # you will see it is a collection of MyForm objects

「管理フォーム」を変更して次のフォームを追加することで、フォームセットを動的に追加/削除できます({{ formset.empty_form }}IDをコピーしてN番目のフォームに変更できます)。その方法の例はオンラインにたくさんあります。

Djangoで動的フォームセットをどのように作成しますか?
Ajaxを使用してDjangoフォームセットにフォームを動的に追加する

于 2012-10-02T02:56:32.193 に答える