我正在创建表单列表,每个表单都会传递prefix arg。在我的例子中,前缀arg是动态值(除了每个形式在初始化期间需要一些额外的kwargs),例如,
for staff in stafflist:
form = forms.BookingForm(
prefix=staff.pk, event=event, type=type)
因此,为了重新创建POST请求的表单,我需要将前缀值存储在Session中。这允许我执行以下操作:
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()
这一切都运行正常,但我想知道是否有比在Session中存储前缀值更好的方法(我通常希望避免)。 Django是否能够自己返回一个带前缀的表单列表而不必再次使用前缀重新创建它们(并且必须记住它)?像request.POST.get_prefixed_data_as dict()之类的东西会很好;)
注意:我正在研究formset,但我相信由于我需要为每个单独的表单设置动态kwargs,我将无法使用它们。