我試圖填充使用來自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