J'essaie d'enregistrer un format, mais il semble de contourner IS_VALID () même s'il existe des champs obligatoires.
Pour tester cela, j'ai une forme simple: p> la vue: p> et le modèle: <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>
4 Réponses :
heh, j'avais exactement le même problème. Le problème est que vous utilisez un format !! Les constructeurs automatiques permettent tous les champs em> sous forme d'être vide. Si, toutefois, vous avez 2 champs et remplissez un seul, alors em> il reconnaîtra vos trucs requis. Cela fait ceci parce que les constructeurs automatiques sont fabriqués pour "Ajout en vrac" et parfois, vous ne voulez pas remplir toutes les formes supplémentaires sur une page. Vraiment énervant; vous pouvez voir ma solution ici. p>
Utilisation: p>
Si non (formset.Errors): ... p> blockQuote>
au lieu de: p>
si formset.is_valid (): ... p> blockQuote>
formset.errors code> ne sera pas rempli avant que ce soit formset.is_valid () code> est appelé, donc cette solution ne fonctionnera pas totalement.
Ajouter 2 lignes.
if request.method == 'POST': def initial_form_count(self): return 10 # the number of forms AlbumFormSet.initial_form_count = initial_form_count formset = AlbumFormSet(request.POST, request.FILES)
Pour chacun des champs requis, ajoutez une entrée supplémentaire dans le paramètre ATTROS
resident_status = forms.ChoiceField(widget=forms.Select(
attrs={'class': 'form-control', 'required': 'required'}), choices=President.RESIDENT_STATUS,
required=True)