问题描述
所以我在Django中有个人资料更新表单,并且我是从ModelForm
继承的。但是我无法通过self.request.user.email
接收用户电子邮件。
class UserUpdateForm(forms.ModelForm):
#Profile email
email=forms.EmailField()
username=forms.CharField(required=True,validators=[username_check,])
class Meta:
model =User
fields =['username','email']
def clean_email(self):
form_useremail=self.cleaned_data.get("email").lower()
if form_useremail!=self.request.user.email and User.objects.filter(username=form_username).exists():
raise forms.ValidationError("Email already in use")
else:
return form_useremail
我收到此错误:
'UserUpdateForm' object has no attribute 'request'
解决方法
您可以从 self.instance.email
访问用户的电子邮件试试看,例如:
def clean_email(self):
email = self.cleaned_data['email']
user_email = self.instance.email
if User.objects.filter(email = email).exists() and user_email.lower() != email.lower():
raise forms.ValidationError('Email already in use')
return email