Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django,更新配置文件,排除当前用户电子邮件_Python_Django_Forms_Emailfield - Fatal编程技术网

Python Django,更新配置文件,排除当前用户电子邮件

Python Django,更新配置文件,排除当前用户电子邮件,python,django,forms,emailfield,Python,Django,Forms,Emailfield,我已经创建了一个更新配置文件页面。所以字段是:Email,First Name,Last Name 在验证过程中,我试图排除登录用户的电子邮件地址,并且过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么 我在这里读了几个问题,但找不到什么。一些用户也有同样的问题 根据下面的代码,我得到的问题是: 类型对象“User”没有属性“email” 我尝试了很多方法来获取当前用户的电子邮件地址(在保存表单之前),但仍然一无所获 forms.py class UpdateProfile(fo

我已经创建了一个更新配置文件页面。所以字段是:Email,First Name,Last Name

在验证过程中,我试图排除登录用户的电子邮件地址,并且过滤其他用户的电子邮件地址。我想如果你看到代码你就会明白我在说什么

我在这里读了几个问题,但找不到什么。一些用户也有同样的问题

根据下面的代码,我得到的问题是: 类型对象“User”没有属性“email”

我尝试了很多方法来获取当前用户的电子邮件地址(在保存表单之前),但仍然一无所获

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

我假设在第
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