Come posso ignorare l'errore "unico" su un campo di ModenForm?
-
21-12-2019 - |
Domanda
Sto cercando di ignorare il messaggio di errore "unico" per un campo nel mio ModenForm.Sto cercando di seguire il Docs per Django 1.6, ma non riesco a farlo funzionare.Roba piuttosto semplice, ho:
models.py:
class EmailAddress(Model):
"""An email address."""
address = EmailField(unique=True)
def __unicode__(self):
return self.address
.
Visualizzazioni.py:
class EmailAddressForm(ModelForm):
class Meta:
model = EmailAddress
fields = {'address'}
error_messages = {
'address': {
u'unique': _('That address has already been added.'),
}
}
.
Se inserisco un'e-mail duplicata, ottengo:
emailaddress_form.errors = {'address': [u'Email address with this Address already exists.']}.`
.
Ho scavato nel codice sorgente e, per quanto posso dire, sto passando correttamente il delegato error_messages
in cui verrà prelevato dalla funzione django.forms.models.fields_for_model
chiamata dal metaclass.Spero che mi manchi qualcosa di ovvio.Qualche suggerimento?
Soluzione
Prova questo: -
Campo di modifica dell'indirizzo su: -
Indirizzo= models.emailfield (univoco= true, error_messages= {'unique': "Quell'indirizzo è già stato aggiunto."})
Altri suggerimenti
Creare un metodo "Clean_Address" sulla classe EmailAddressform, si spera che questo risolverà il tuo 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']
.