No Email field in the User Registration Form

40 views
Skip to first unread message

akshat

unread,
Jun 3, 2015, 7:21:10 AM6/3/15
to django...@googlegroups.com

Hello, I am using Django 1.8 and creating a custom user model and registration. My Custom USer registration form is this - 
class CustomUserCreationForm(UserCreationForm):
"""
A form that creates a user, with no privileges, from the given email and password
"""

def __init__(self,*args,**kargs):
super(CustomUserCreationForm,self).__init__(*args,**kargs)
del self.fields['username']

class Meta:
model = CustomUser
fields = ['email',]

My CustomUser model is this - 
class CustomUser(AbstractBaseUser):

first_name = models.CharField(max_length=100,blank=True)
last_name = models.CharField(max_length=100,blank=True)
college = models.CharField(max_length=200,blank=True)
email = models.EmailField(unique=True,blank=False)
date_joined = models.DateTimeField(_('date joined'), default=datetime.now())
is_active   = models.BooleanField(default=True)
is_superuser    = models.BooleanField(default=False)
is_staff    = models.BooleanField(default=False)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name']

objects = CustomUserManager()

class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')

def get_absolute_url(self):
return "/users/%s/" % urlquote(self.email)

def get_full_name(self):
"""
Returns the first name plus the last name , with a space in between
"""
full_name = '%s %s' % (self.first_name,self.last_name)
return full_name.strip()

def get_short_name(self):
"""
Returns the short name for the user
"""
return self.first_name

def email_user(self,subject,message,from_email=None):
"""
Sends an email to the user
"""
send_mail(subject,message,from_email,[self.email])


I am generating this form from this view - 
def register_user(request):
    if request.method == 'POST':
        form = CustomUserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')
        
    else:
        form = CustomUserCreationForm()
    args = {}
    args.update(csrf(request))
    
    args['form'] = form
    
    return render(request, 'register.html', args)

And finally my register.html is this - 
{% extends "base.html" %}

{% block content %}
  
  <h2>Register</h2>
  
  {% for field in form %}
    {{field.error}}

  {% endfor %}
  
  <form action="/accounts/register/" method="post">
  {% csrf_token %}
  {{form.as_p}}
  
  
  
  <input type="submit" value="Register" />
    
  </form>
  
{% endblock %}

Despite doing everything right (I guess) my generated registration form has no email field and looks like this - 

Will please anybody help me in knowing where I am going wrong?
Thanks.

Luis Zárate

unread,
Jun 6, 2015, 12:25:41 PM6/6/15
to django...@googlegroups.com
Where is your meta class ?

It is not in __init__() function, is it?
if it is then problem is there.

class Meta:
model = CustomUser
fields = ['email',]



del self.fields['username']

this is wrong, use exclude in Meta class to remove fields




--
"La utopía sirve para caminar" Fernando Birri


Reply all
Reply to author
Forward
0 new messages