如何使用Django的更新视图来检查电子邮件是否唯一?

时间:2015-07-13 01:43:20

标签: django

class UpdateProfile(UpdateView):
    model = User
    fields = ['first_name', 'last_name', 'username', 'email']
    template_name = 'account/update.html'
    success_url = '/accounts/profile/'

    def get_object(self, queryset=None):
        return self.request.user

    def clean_email(self):
        email = self.cleaned_data.get('email')
        username = self.cleaned_data.get('username')
        if email and User.objects.filter(email=email).exclude(username=username).count() > 0:
            raise forms.ValidationError(u'This email address is already registered.')
        return email

我上面的代码如下。如何使用UpdateView检查电子邮件字段是否唯一。如果用户添加了与其他人相同的电子邮件,我想将其添加到form.errors数组并阻止表单保存。我该怎么办?我尝试了一切。

1 个答案:

答案 0 :(得分:1)

在models.py

UserModel(models.Model):
    ...
    email = models.EmailField(unique=True)
    ...

这将确保您不必在视图上编写任何逻辑以确保字段的唯一性。