擅长:python、mysql、java
<p>正如您所知,使用Django 1.4和基于泛型类的CreateView和UpdateView,在每个模型表单上都会填充一个self.instance,它允许您比较已发布的电子邮件和当前用户电子邮件。</p>
<p>下面是一个代码示例,使用mixin</p>
<pre><code>class EmailUniqueMixin(object):
"""
Ensure each User's email is unique
on the form level
"""
def clean_email(self):
email = self.cleaned_data['email']
existing_email = User.objects.filter(email=email).exclude(pk=self.instance.id)
if existing_email:
raise forms.ValidationError('That email address already exists')
else:
return email
</code></pre>