単純なモデルがあるとしましょう:
Class Contact(models.Model):
email = models.EmailField(max_length=70,blank=True)
first = models.CharField(max_length=25,blank=True)
last = models.CharField(max_length=25,blank=True)
私がやりたいのは、電子メールを一意に設定することですが、そうする際には、空白の電子メールアドレスを除外するようにする必要があります-それは望ましくありません.
このようなことを考えていましたが、これに対処するためのより良い方法があるかどうか疑問に思っています。
from django.core.validators import email_re
from django.core.exceptions import ValidationError
def save(self, *args, **kwargs):
# ... other things not important here
self.email = self.email.lower().strip() # Hopefully reduces junk to ""
if self.email != "": # If it's not blank
if not email_re.match(self.email) # If it's not an email address
raise ValidationError(u'%s is not an email address, dummy!' % self.email)
if Contact.objects.filter(email = self.email) # If it already exists
raise ValidationError(u'%s already exists in database, jerk' % self.email)
super(Contact, self).save(*args, **kwargs)
これを行うより良い方法はありますか?