Sto tentando di salvare un formset ma sembra che sia bypassando is_valid() anche se ci sono campi obbligatori.Il formset di Django non è valido
Per verificare questa Ho una forma semplice:
class AlbumForm(forms.Form):
name = forms.CharField(required=True)
La vista:
@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))
E il modello:
<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>
ciò che finisce accadendo è che premi "aggiungi" senza inserire un nome, quindi HttpRespons e ('lavorato') viene chiamato apparentemente assumendo che sia una forma valida.
Potrei mancare qualcosa qui, ma non riesco a vedere cosa c'è che non va. Quello che voglio succedere è, proprio come qualsiasi altro modulo se il campo è richiesto per sputare un errore se non è compilato. Qualche idea?
'formset.errors' non verrà riempito finché non viene chiamato' formset.is_valid() ', quindi questa soluzione non funzionerà. – kubilayeksioglu
Questa non è la soluzione corretta per postare – overflow