Reputation: 11
When I try the following code in django 2.1 the email field is not saving in the admin site.only the username is saving.I can create emailfield in Custom form.So can anyone help me to sort out this problem. Thanks in advance
views.py '''
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
from django.core.exceptions import ValidationError
class CustomUserCreationForm(forms.Form):
username = forms.CharField(label='Enter Username', min_length=4, max_length=150)
email = forms.EmailField(label='Enter email')
password1 = forms.CharField(label='Enter password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)
def clean_username(self):
username = self.cleaned_data['username'].lower()
r = User.objects.filter(username=username)
if r.count():
raise ValidationError("Username already exists")
return username
def clean_email(self):
email = self.cleaned_data['email'].lower()
r = User.objects.filter(email=email)
if r.count():
raise ValidationError("Email already exists")
return email
def clean_password2(self):
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
if password1 and password2 and password1 != password2:
raise ValidationError("Password don't match")
return password2
def save(self, commit=True):
user = User.objects.create_user(
self.cleaned_data['username'],
self.cleaned_data['email'],
self.cleaned_data['password1']
)
return user
''' forms.py '''
from django.forms import EmailField
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = EmailField(required=True)
class meta:
model = User
fields = ["username", "email", "password1", "password2"]
'''
Upvotes: 1
Views: 32
Reputation: 11
I found the answer.In the forms.py we want to use the capital m for meta class instead of using small m.it was the error
Upvotes: 0