在我的Django应用程序应用程序中,我有一个从简单(非模型)窗体创建的formset,额外= 1(以允许javasript稍后添加更多窗体)。Django Formset.is_valid()失败的额外形式
class SomeForm(forms.Form):
#some fields with required=False
length = forms.IntegerField(required=False)
# An example of one of the fields with choices i have
A = 0
B = 1
C = 2
D = 3
choices = ((A, 'Aah'), (B, 'Baa'), (C, 'Caa'), (D, 'Daa'))
# This is a required choice field
pickme = forms.ChoiceField(choices=choices)
SomeFormset = formset_factory(SomeForm, can_delete=True, extra=1)
现在,当我创建并尝试验证它在我看来,在POST请求:
my_formset = SomeFormset(request.POST, request.FILES)
if(my_formset.is_valid()):
# FAIL
它总是失败上述检查中,如果额外呈现的表单提交空。
如果我在最后一个空的额外表格上检查form.changed_data
,我会得到可以选择的字段(例如上面的pickme)。 换句话说,当需要一些选择字段时,formset不够聪明,以致于无法确定空的提交表单应该被忽略。
谢谢我会研究它并回复你 – drozzy 2009-05-30 02:43:13
这是由于选择字段,因为forms.changed_data包含所有我没有“空”条目的选择字段。我更新了这个问题以反映这一点。尽管如此,我仍然没有一个好的解决方案。 – drozzy 2009-06-01 12:55:08