hiddeninput - ¿Cómo hacer que los errores de la forma Django no estén en un UL?
submit django form (2)
Los errores en mi formulario Django se están procesando en un UL según los docs ...
Django
{{ form.non_field_errors }}
HTML
<ul class="errorlist">
<li>Sender is required.</li>
</ul>
¿Cómo puedo representar los errores para que no aparezcan en un UL, sino en una etiqueta de párrafo para cada error relevante de los campos? Así que idealmente ...
<ul>
<li>
<label>...</label>
<input>...</input>
<p>Error message...</p>
</li>
</ul>
EDITAR:
Debería haber usado este código en mi ejemplo para mayor claridad ...
{{ form.fieldname.errors }}
Obviamente, no se puede procesar dentro del contexto del campo porque son "errores de no campo" como lo indica el nombre del atributo. La única forma de solucionar este problema es agregar el error en el lugar correcto al validar. Por ejemplo, haciendo los siguientes resultados en errores de no campo:
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'')
Sin embargo, puedes hacer lo siguiente para que el error se muestre en el campo derecho:
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'')
ACTUALIZAR:
De los docs Django:
Cada campo de formulario con nombre se puede enviar a la plantilla usando {{form.name_of_field}}, que producirá el HTML necesario para mostrar el widget del formulario. El uso de {{form.name_of_field.errors}} muestra una lista de errores de formulario, representada como una lista desordenada. Esto podría parecer:
<ul class="errorlist">
<li>Sender is required.</li>
</ul>
La lista tiene una clase CSS de lista de errores que le permite diseñar su apariencia. Si desea personalizar aún más la visualización de errores, puede hacerlo en bucle (énfasis mío) :
{% if form.subject.errors %}
<ol>
{% for error in form.subject.errors %}
<li><strong>{{ error|escape }}</strong></li>
{% endfor %}
</ol>
{% endif %}
Puede mostrar su error como lo siguiente en su plantilla:
<p>{{ form.fieldname.errors.as_text }}</p>