¿Cómo puedo reemplazar el 'único' error en un ModelForm campo?
-
21-12-2019 - |
Pregunta
Estoy tratando de reemplazar la "única" del mensaje de error para un Campo en mi ModelForm.Estoy tratando de seguir la docs para Django 1.6, pero no puedo conseguir que funcione.Algo bastante sencillo, yo tengo:
models.py:
class EmailAddress(Model):
"""An email address."""
address = EmailField(unique=True)
def __unicode__(self):
return self.address
views.py:
class EmailAddressForm(ModelForm):
class Meta:
model = EmailAddress
fields = {'address'}
error_messages = {
'address': {
u'unique': _('That address has already been added.'),
}
}
Si me escriba un correo electrónico duplicados, me sale:
emailaddress_form.errors = {'address': [u'Email address with this Address already exists.']}.`
He hurgó en el código fuente, y por lo que puedo decir que me estoy pasando el error_messages
dict correctamente en donde será recogido por el django.forms.models.fields_for_model
la función llamada por el Metaclass.Esperemos que me estoy perdiendo algo que es obvio.Alguna sugerencia?
Solución
prueba Esto :-
Cambio de dirección de campo :-
dirección = modelos.EmailField(unique=True, error_messages={'únicos':"Que la dirección ya ha sido agregado."})
Otros consejos
Crear un método "clean_address" en EmailAddressForm clase, espero que Esto se ha resuelto el problema.
def clean_address(self):
"""Prevent duplicate email addresses."""
if 'email' in self.changed_data:
if self.Meta.model.all().filter('address =', self.cleaned_data['address']).count():
raise forms.ValidationError('Email address with this Address already exists.: %s.' %
self.cleaned_data['address'])
return self.cleaned_data['address']