2012-04-01 12 views
11

Estoy tratando de establecer errores de campo en una forma limpia() y actualmente estoy haciendo:Django - formar limpias() y de campo errores

self._errors['address'] = self._errors.get('address', ErrorList()) 
self._errors['address'].append(_(u'Please specify an address.')) 

¿Existe un método mejor y, si es posible más corto para ¿haciendo esto?

+0

uso self.errors lugar, devuelve _errors y no está destinado a ser privada – radtek

Respuesta

5
  1. La manera estándar es raise ValidationError(message).
  2. Mueva la validación específica del campo a los métodos clean_<fieldname>(), clean_address en su caso. ValidationError planteado en dicho método adjuntará un mensaje de error a un campo específico. Una subida de clean() se atribuirá al modelo en general.
+1

actualmente estoy usando 'clean()' para la validación de ciertas cosas relacionadas con múltiples campos - Soy bastante nuevo a Django y Python en general y me preguntaba si había una forma mejor/más corta para verificar/crear/agregar errores específicos de campo. – RS7

+0

Añadido artículo # 3, quizás describe lo que necesita. Tomado de la implementación interna de django de 'clean_fields' –

+0

¿Puedes ampliar tu sugerencia n. ° 3? No funciona para mi Puedo ver que la ['ValidationError' class] (https://code.djangoproject.com/browser/django/trunk/django/core/exceptions.py#L41) acepta un diccionario de errores como ese, pero [' Forms ._clean_form'] (https://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L297) en realidad no hace uso de él. –

7

Quizás esto te ayude. En general, se prefiere anular la limpieza y dentro de la función se puede hacer lo siguiente

Si desea generar errores específicos del formulario que podría hacer.

self._errors["field"] = ErrorList([u"Error"]) 

esto es asegurarse de que obtener la clase de error

si tiene un error no campo que podría elevar sencilla un error de validación igual que

raise forms.ValidationError(_("Error")) 

espero que esto ayude.

Cuestiones relacionadas