0

フォームのリストを作成しています。各フォームには接頭辞 argが渡されます。私の場合、プレフィックス arg は動的な値です (各フォームには初期化中に追加の kwargs が必要であることに加えて)。

for staff in stafflist:
    form = forms.BookingForm(
                prefix=staff.pk, event=event, type=type)

したがって、POST リクエストのフォームを再作成するには、プレフィックス値をセッション内に保存する必要があります。これにより、次のことが可能になります。

staff_list = request.session['staff_list_on_view']
    for staff in stafflist:
        post_forms_dict[staff.id] = forms.BookingForm(
            request.POST, prefix=staff.pk, event=event, type=type)

if all([form.is_valid() for form in post_forms_dict.values()]):
    for form in post_forms_dict.values():
        form.save()

これはすべて正常に機能しますが、プレフィックス値をセッション内に保存するよりも良い方法があるかどうか疑問に思っていました (これは一般的に避けたいと思います)。Django は、プレフィックスを再度使用して (そしてそれを覚える必要なく) プレフィックス付きのフォームのリストを独自に返すことができますか? request.POST.get_prefixed_data_as dict() のようなものがいいでしょう;)

注: フォームセットを調べていましたが、個々のフォームごとに動的な kwargs を設定する必要があるため、それらを使用できないと思います。

4

0 に答える 0