Очевидно, что он не может отображаться в контексте поля, потому что это «неполевые ошибки», как следует из имени атрибута.Единственный способ исправить это - добавить ошибку в нужное место при проверке.Например, выполнение следующих ошибок приводит к ошибкам, не связанным с полем:
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')
Однако вы можете сделать следующее, чтобы эта ошибка все еще отображалась в правом поле:
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')
ОБНОВЛЕНИЕ:
Из Django документы :
Каждое именованное поле формы может быть выведено в шаблон с помощью {{form.name_of_field}}, который произведет HTML, необходимый для отображения виджета формы.Использование {{form.name_of_field.errors}} отображает список ошибок формы, представленных как неупорядоченный список.Это может выглядеть так:
<ul class="errorlist">
<li>Sender is required.</li>
</ul>
В списке есть класс ошибок CSS, позволяющий стилизовать его внешний вид. Если вы хотите дополнительно настроить отображение ошибок, вы можете сделать это, зацикливая их (выделение мое) :
{% if form.subject.errors %}
<ol>
{% for error in form.subject.errors %}
<li><strong>{{ error|escape }}</strong></li>
{% endfor %}
</ol>
{% endif %}