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数组并阻止表单保存。我该怎么办?我尝试了一切。
答案 0 :(得分:1)
在models.py
中UserModel(models.Model):
...
email = models.EmailField(unique=True)
...
这将确保您不必在视图上编写任何逻辑以确保字段的唯一性。