基本上,我想要做的是使用一个受限制的formset.POST,向其添加一个空白表单,然后返回新的formset。
class MyView(View):
def post(self, request):
MyFormSet = formset_factory(MyForm)
posted_formset = MyFormSet(request.POST)
# Append a blank form to posted_formset here
return render(request, 'mytemplate.html', {'formset': posted_formset})
在Django 1.6中有没有干净的方法呢?现在,我有一个解决方法,涉及创建一个新的formset,initial
设置为posted_formset
中绑定的数据,但它有点笨重,我觉得应该做一个更容易的方法。
答案 0 :(得分:0)
这可能是此问题的重复:Django: How to add an extra form to a formset after it has been constructed?
否则查看工厂函数的额外参数。您可以在Django Documentation
中获得有关formset的更多信息答案 1 :(得分:0)
因此似乎没有干净的方法来执行此操作,因为在将formset绑定到QueryDict之后,传递给formset_factory
的额外参数变得无关紧要。以下是我现在在视图中的表现:
class MyView(View):
def post(self, request):
MyFormSet = formset_factory(MyForm)
posted_formset = MyFormSet(request.POST)
initial = []
for form in posted_formset:
data = {}
for field in form.fields:
data[field] = form[field].value()
initial.append(data)
formset = AuthorFormSet(initial=initial)
return render(request, 'mytemplate.html', {'formset': formset})
基本上,我将一个formset绑定到request.POST,然后迭代它并获取字段值并将它们放入一个dicts数组initial
中,当我创建一个新的formset时,我会传入它们(参见<{3}})最后会有一个额外的空白表格,因为它没有绑定。
这适用于任何表单和formset。希望它可以帮到某人。