Python Django,更新配置文件,排除当前用户电子邮件
我已经创建了一个更新配置文件页面。所以字段是:Email,First Name,Last Name 在验证过程中,我试图排除登录用户的电子邮件地址,并且过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么 我在这里读了几个问题,但找不到什么。一些用户也有同样的问题 根据下面的代码,我得到的问题是: 类型对象“User”没有属性“email” 我尝试了很多方法来获取当前用户的电子邮件地址(在保存表单之前),但仍然一无所获 forms.pyPython Django,更新配置文件,排除当前用户电子邮件,python,django,forms,emailfield,Python,Django,Forms,Emailfield,我已经创建了一个更新配置文件页面。所以字段是:Email,First Name,Last Name 在验证过程中,我试图排除登录用户的电子邮件地址,并且过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么 我在这里读了几个问题,但找不到什么。一些用户也有同样的问题 根据下面的代码,我得到的问题是: 类型对象“User”没有属性“email” 我尝试了很多方法来获取当前用户的电子邮件地址(在保存表单之前),但仍然一无所获 forms.py class UpdateProfile(fo
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
我假设在第
current\u user\u email=user.email
行中,“user”实际上不是一个实际的用户实例,它是一个模型类,您为在Meta中设置model=user
而导入。
如果只想使用此表单编辑用户数据,则应执行以下操作:
url.py
urlpatterns=patterns('project.apps.app\u name.views'
url(r'^edit-user/(?P<pk>\d+)/?$','edit_user',name='edit_user'),
)
在forms.py中,您应该将行更改为:
current_user_email = User.email
致:
但是正确的方法是(如果使用django>1.6)将创建自定义用户模型,并设置电子邮件字段属性
unique=True
您使用的是django contrib用户模型吗?还有,哪一行会引发错误?是的,我使用的是django用户模型。问题是获取当前登录的用户电子邮件地址。因此这一行:当前用户\u电子邮件=用户。电子邮件
。
current_user_email = User.email
current_user_email = self.instance.email