Ich versuche, ein Formset zu speichern, aber es scheint, Is_valid() zu umgehen, obwohl es Felder erforderlich sind.Django-Formularsatz validiert nicht
Um dies zu testen, habe ich eine einfache Form haben:
class AlbumForm(forms.Form):
name = forms.CharField(required=True)
Aussicht:
@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))
Und die Vorlage:
<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>
Was ich am Ende passiert ist hit "add" ohne einen Namen einzugeben, dann HttpRespons e ("bearbeitet") wird als scheinbar angenommen bezeichnet, es ist eine gültige Form.
Ich könnte etwas hier fehlen, aber ich kann nicht sehen, was los ist. Was ich möchte, ist genau wie jedes andere Formular, wenn das Feld einen Fehler ausspucken muss, wenn es nicht ausgefüllt ist. Irgendwelche Ideen?
'formset.errors' wird nicht gefüllt, bis' formset.is_valid() 'aufgerufen wird, so dass diese Lösung völlig nicht funktioniert. – kubilayeksioglu
Dies ist nicht die richtige Lösung zum Posten – overflow