我试图填充使用来自POST请求的数据Django的表单集中。我能够正确显示该formset和实例再次大多还好,但我在这里该formset与结尾,这是不可取的2个空白行结束了一个问题。下面是我们一直在使用中views.py功能:添加新的形式,以一个Django FORMSET基于POST数据
forms.py
class DepositForm(forms.Form):
InsID = forms.IntegerField()
DepositTypeID = forms.IntegerField()
DepositAmount = forms.IntegerField()
Account = forms.IntegerField()
DepositFormSet = formset_factory(DepositForm, extra=1)
views.py
def _DepositEditor(request, c):
if request.POST.has_key('form-0-InsID'):
formset = DepositFormSet(request.POST)
if formset.is_valid():
formset = DepositFormSet(initial=formset.cleaned_data)
else:
formset = DepositFormSet()
c['formset'] = formset
return render_to_response('deposits/dep.html', c)
dep.html
<form action="" method="post">
{{formset.management_form}}
{% for form in formset.forms %}
{{form.errors }}
{% for field in form %}
{{field.label}}: {{field}}
{% endfor %}
<br />
{% endfor %}
<input type="submit" name="add" value="Add Deposit"></input>
</form>
应是所有相关的代码。无论如何,该模板显示了整个formset,它应该包含一个空行(或者在出现错误的情况下,没有空白行,但是在最后一行之上的错误消息)。当您单击“添加”并将最后一行留为空白时,就会出现问题。在代码中,这仍然会传递formset.is_valid(),所以它会使用一个额外的字段创建新的表单集。如果点击这里添加,它会返回错误,但仍然允许您填写除最后一行以外的所有内容并生成有效的表单集。有没有办法告诉我的formset空白表单应该失败验证?或者,有没有更好的方法来做到这一点?该页面最终计划集成一些jQuery的东西,所以虽然这并不理想,但如果有一种很好的方法来使用jquery工具来解决这个问题,那可能会足够好。非常感谢!
这看起来已经做到了。非常感谢! – 2009-12-23 14:43:00
不客气:) – 2009-12-24 12:41:45