Il ne peut évidemment pas être rendu dans le contexte du champ, car il s'agit d'"erreurs non liées au champ", comme le nom de l'attribut l'indique. La seule façon de résoudre ce problème est d'ajouter l'erreur au bon endroit lors de la validation. Par exemple, si vous faites ce qui suit, vous obtiendrez des erreurs hors champ :
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
def clean(self):
somefield = self.cleaned_data.get('somefield')
if not somefield:
raise forms.ValidationError('Some field is blank')
Cependant, vous pouvez faire ce qui suit pour que cette erreur s'affiche toujours dans le champ droit :
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
def clean(self):
somefield = self.cleaned_data.get('somefield')
if not somefield:
if not self._errors.has_key('somefield'):
from django.forms.util import ErrorList
self._errors['somefield'] = ErrorList()
self._errors['somefield'].append('Some field is blank')
UPDATE :
Depuis le site Django docs :
Chaque champ de formulaire nommé peut être sorti dans le modèle en utilisant {{ form.name_of_field }}, qui produira le HTML nécessaire à l'affichage du le widget de formulaire. L'utilisation de {{ form.name_of_field.errors }} permet d'afficher une liste d'erreurs de formulaire, rendue sous forme de liste non ordonnée. Cela pourrait ressembler à ceci :
<ul class="errorlist">
<li>Sender is required.</li>
</ul>
La liste a une classe CSS de errorlist pour vous permettre de styliser sa apparence. Si vous souhaitez personnaliser davantage l'affichage des erreurs, vous pouvez le faire en passant en boucle sur celles-ci (c'est moi qui souligne). vous pouvez le faire en les parcourant en boucle (c'est moi qui souligne). :
{% if form.subject.errors %}
<ol>
{% for error in form.subject.errors %}
<li><strong>{{ error|escape }}</strong></li>
{% endfor %}
</ol>
{% endif %}