Frage

Ich versuche, die „eindeutige“ Fehlermeldung für ein Feld in meiner ModelForm zu überschreiben.Ich versuche dem zu folgen Dokumente für Django 1.6, aber ich bekomme es nicht zum Laufen.Ziemlich einfaches Zeug, ich habe:

models.py:

class EmailAddress(Model):
    """An email address."""
    address = EmailField(unique=True)

    def __unicode__(self):
        return self.address

Ansichten.py:

class EmailAddressForm(ModelForm):
    class Meta:
        model = EmailAddress
        fields = {'address'}
        error_messages = {
            'address': {
                u'unique': _('That address has already been added.'),
            }
        }

Wenn ich eine doppelte E-Mail-Adresse eingebe, erhalte ich Folgendes:

emailaddress_form.errors = {'address': [u'Email address with this Address already exists.']}.`

Ich habe im Quellcode herumgestöbert und soweit ich das beurteilen kann, übergebe ich den error_messages Diktieren Sie richtig, wo es von der abgeholt wird django.forms.models.fields_for_model Funktion, die von der Metaklasse aufgerufen wird.Hoffentlich übersehe ich etwas Offensichtliches.Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Versuche dies :-

Adressfeld ändern in:-

address = models.EmailField(unique=True, error_messages={'unique':"Diese Adresse wurde bereits hinzugefügt."})

Andere Tipps

Erstellen Sie eine Methode „clean_address“ für die Klasse EmailAddressForm. Hoffentlich wird Ihr Problem dadurch behoben.

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']
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top