【发布时间】:2014-06-11 21:16:17
【问题描述】:
我创建了一个更新个人资料页面。所以这些字段是:电子邮件、名字、姓氏。
在验证中,我试图排除登录用户的电子邮件地址,并且我正在过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么。
我在这里阅读了几个问题,但找不到任何东西。一些用户遇到了同样的问题。
所以使用下面的代码,我遇到的问题是: 类型对象“用户”没有属性“电子邮件”。
我尝试了很多方法来获取当前用户的电子邮件地址(在我保存表单之前),但仍然没有。
forms.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
【问题讨论】:
-
你在使用 django contrib 用户模型吗?另外,哪一行会引发错误?
-
是的,我正在使用 django 用户模型。问题在于获取当前登录的用户电子邮件地址。所以是这一行:
current_user_email = User.email.
标签: python django forms emailfield