template supported language examples does accept django django-models

supported - Mensaje de error de Django mostrado para campos únicos



which option does django templates accept (4)

Me gustaría cambiar el mensaje de error predeterminado cuando las entradas duplicadas intentan guardar cuando deberían ser únicas, es decir, unique=True . Muy parecido a esto:

email = models.EmailField(unique=True, error_messages={''unique'':"This email has already been registered."})

Pero, unique en el caso anterior fue una conjetura, y no funciona. Tampoco puedo averiguar cuál es el nombre del error en realidad. ¿Alguien sabe el nombre correcto?

Tenga en cuenta que esta validación es el nivel del modelo, no la validación de formularios

EDITAR: Un poco más de información, en el momento en que el mensaje de error actual se muestra en form.errors :

[model_name] with this [field_label] already exists

Lo que no es muy fácil de usar, así que quise anularlo ...



El mensaje de error único lo construye django.db.models.base.unique_error_message (al menos en Django 1.3).


Este mensaje de error aparentemente está codificado en el archivo django / db / models / base.py.

def unique_error_message(self, model_class, unique_check): opts = model_class._meta model_name = capfirst(opts.verbose_name) # A unique field if len(unique_check) == 1: field_name = unique_check[0] field_label = capfirst(opts.get_field(field_name).verbose_name) # Insert the error into the error dict, very sneaky return _(u"%(model_name)s with this %(field_label)s already exists.") % { ''model_name'': unicode(model_name), ''field_label'': unicode(field_label) } # unique_together else: field_labels = map(lambda f: capfirst(opts.get_field(f).verbose_name), unique_check) field_labels = get_text_list(field_labels, _(''and'')) return _(u"%(model_name)s with this %(field_label)s already exists.") % { ''model_name'': unicode(model_name), ''field_label'': unicode(field_labels) }

Una forma de resolver esto es crear su modelo personalizado derivado de EmailField y anular el método unique_error_message. Pero tenga en cuenta que podría romper cosas cuando actualice a versiones más recientes de Django.


Muchas gracias.

email = models.EmailField(unique=True, error_messages={''unique'':"This email has already been registered."})

esto funcionó muy bien ahora.

Si desea personalizar los forms.ModelForm de forms.ModelForm como invalided , hágalo en forms.ModelForm

email = forms.EmailField(error_messages={''invalid'': ''Your email address is incorrect''})

Pero el mensaje unique debe personalizarse en el campo del model , como se mencionó anteriormente.

email = models.EmailField(unique=True, error_messages={''unique'':"This email has already been registered."})