0

So I have the profile update form in Django and I inherit it from ModelForm. But I'm unable to get user email by 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

I'm getting this error:

'UserUpdateForm' object has no attribute 'request'

1 Answers1

1

You can access to user's email from self.instance.email

try it for example:

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
Taregh Naderi
  • 181
  • 1
  • 7
  • 1
    Welcome to Stack Overflow! Code-only answers are not particularly helpful. Please add some descriptions of how this code solves the problem. – Sven Eberth Jul 02 '21 at 21:28