[英]Django Formset in generic FormView
嗨,我在通用 FormView 中使用了表單集,如下所示:
class RequestRecommendationView(FormView):
template_name = "account/stepfour.html"
form_class = formset_factory(StepFourForm)
def form_valid(self,form):
print form.is_valid()
cleaned_data = form.cleaned_data
# return redirect(reverse("some_url_name"))
formset_factory 的表單是這樣的:
class StepFourForm(forms.Form):
contact_person = forms.CharField(required=True)
email = forms.EmailField(required=True)
company = forms.CharField(required=True)
request_message = forms.CharField(required=True)
我的 html 結構是這樣的:
<div style="padding-top:100px;padding-left:10px;">
<h4> Request a Recommendation </h4>
<form method="post" action="">
{% csrf_token %}
<table id="myForm">
<tbody>
{% for f in form %}
{% for field in f %}
<tr>
<td>{{field.label_tag}}</td>
<td>{{field}}</td>
{% for error in field.errors %}
<td><span>{{ error }}</span></td>
{% endfor %}
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table>
<button class="btn btn-primary btn-xlarge" type="submit" name="submit">Request Now</button>
{{ form.management_form }}
</form>
</div>
然后我使用 django-dynamic-formset ( https://code.google.com/p/django-dynamic-formset/ ) 通過這些添加/刪除額外的表單:
<script type="text/javascript">
$(function() {
$('#myForm tbody').formset();
})
</script>
問題是:如果我將表單留空(每個字段都是必需的),它會設法到達我的類視圖的 form_valid() (盡管它不應該),如果我填寫其中一個字段(讓其他字段未填寫) ,它會成功顯示錯誤相關消息。 為什么會這樣? 我該怎么做才能解決它? 是否提供 form_class 一個表單集是所有這一切的幕后推手?
這個問題是 6 年前被問到的,我發現它是因為我遇到了同樣的問題,因為它沒有得到解答,我將提供我找到的解決方案。 根據驗證最少表單的文檔,您必須提供一個min_num
並在min_num
設置validate_min=True
:
formset = formset_factory(your_form, min_num=2, validate_min=True, extra=2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.