我想保存一個formset,但它似乎繞過is_valid(),即使有必需的字段。Django formset不驗證
爲了驗證這一點,我有一個簡單的表格:
class AlbumForm(forms.Form):
name = forms.CharField(required=True)
的觀點:
@login_required
def add_album(request, artist):
artist = Artist.objects.get(slug__iexact=artist)
AlbumFormSet = formset_factory(AlbumForm)
if request.method == 'POST':
formset = AlbumFormSet(request.POST, request.FILES)
if formset.is_valid():
return HttpResponse('worked')
else:
formset = AlbumFormSet()
return render_to_response('submissions/addalbum.html', {
'artist': artist,
'formset': formset,
}, context_instance=RequestContext(request))
而且模板:
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ formset.management_form }}
{% for form in formset.forms %}
<ul class="addalbumlist">
{% for field in form %}
<li>
{{ field.label_tag }}
{{ field }}
{{ field.errors }}
</li>
{% endfor %}
</ul>
{% endfor %}
<div class="inpwrap">
<input type="button" value="add another">
<input type="submit" value="add">
</div>
</form>
什麼結束了發生的事情是我點擊「添加」而不輸入名稱,然後HttpRespons e('工作')被稱爲似乎認爲它是有效的形式。
我可能在這裏錯過了一些東西,但我看不出有什麼問題。我想要發生的是,就像任何其他形式,如果該字段需要吐出一個錯誤,如果它沒有填寫。任何想法?
'formset.errors'在調用'formset.is_valid()'之前不會被填充,所以這個解決方案完全無法工作。 – kubilayeksioglu 2013-04-27 21:37:58
這不是正確的解決方案 – overflow 2016-10-26 14:09:38