我创建了一个更新个人资料页面。所以这些字段是:电子邮件、名字、姓氏。
在验证中,我试图排除登录用户的电子邮件地址,并且我正在过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么。
我在这里阅读了几个问题,但找不到任何东西。一些用户也有同样的问题。
因此,使用下面的代码,我遇到的问题是: type object 'User' has no attribute 'email'。
我尝试了很多方法来获取当前用户的电子邮件地址(在我保存表单之前),但仍然没有。
表格.py
class UpdateProfile(forms.ModelForm):
email = forms.EmailField(required=True)
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
class Meta:
model = User
fields = ('email', 'first_name', 'last_name')
def clean_email(self):
email = self.cleaned_data.get('email')
current_user_email = User.email
if User.objects.filter(email__iexact=email).exclude(email__iexact=current_user_email).count() > 0:
raise forms.ValidationError('This email address is already in use.'
'Please supply a different email address.')
return email
def save(self, commit=True):
user = super(UpdateProfile, self).save(commit=False)
if commit:
user.save()
return user