こんにちは、次のような一般的な 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>
問題は次のとおりです。フォームを空のままにしておくと(すべてのフィールドが必要です)、フィールドの1つに入力すると(他のフィールドは入力しないで)、クラスビューのform_valid()に到達できます(そうすべきではありません)。 、エラーに関連するメッセージが正常に表示されます。なぜこうなった ?それを修正するにはどうすればよいですか?form_class を提供しているフォームセットは、このすべての背後にありますか?