I have a model called Employee for the registration. When I run the code I go the
username' is an invalid keyword argument for this function
error.
employee=Employee(user=user, username= form.cleaned_data['username'], email= form.cleaned_data['email'], password=form.cleaned_data['password'])
this is my view.py code
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from django.shortcuts import render_to_response
from django.template import RequestContext
from Employee_Details.forms import RegistationForm
from Employee_Details.models import Employee
def EmployeeRegistation(request):
if request.user.is_authenticated():
return HttpResponseRedirect('/profile/')
if request.method=='POST':
form=RegistationForm(request.POST)
if form.is_valid():
user=User.objects.create_user(username= form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])
user.save()
employee=Employee(user=user, username= form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])
employee.save()
return HttpResponseRedirect('/profile/')
else:
return render_to_response('registation.html',{"form":form}, context_instance=RequestContext(request))
else:
'''user is not submitting the form show a blank Registation Form'''
form=RegistationForm();
context={'form':form}
return render_to_response('registation.html',context,context_instance=RequestContext(request))
This is my model:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class Employee(models.Model):
user=models.OneToOneField(User)
name=models.CharField(max_length=100)
address=models.CharField(max_length=200)
designation=models.CharField(max_length=100)
email=models.CharField(max_length=100)
role=models.CharField(max_length=10)
#image=models.ImageField()
project=models.CharField(max_length=50)
task=models.CharField(max_length=50)
def __unicode(self):
return self.name
This is my form.py
from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from Employee_Details.models import Employee
class RegistationForm(ModelForm):
username=forms.CharField(label=(u'User Name'))
email=forms.EmailField(label=(u'Email Address'))
password=forms.CharField(label=(u'Password'))
password1=forms.CharField(label=(u'Verfy Password'))
name=forms.CharField(label=(u'Name'))
address=forms.CharField(label=(u'Address'))
designation=forms.CharField(label=(u'Designation'))
role=forms.CharField(label=(u'Role'))
#image=models.ImageField()
project=forms.CharField(label=(u'Project'))
task=forms.CharField(label=(u'Task'))
class Meta:
model=Employee
exclude=('user',)
def clean_username(self):
username=self.cleaned_data['username']
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError('The username is already taken. Please try with another')
def clean(self):
if self.cleaned_data['password'] !=self.cleaned_data['password1']:
raise forms.ValidationError("The Password did not match. Please try again")
return self.cleaned_data
please someone help help me to resolve this matter. I’m referring some video tutorials.
You have no username
field in your model and it's redundant because you have that field already in the User
model:
user=User.objects.create_user(username=form.cleaned_data['username'],email= form.cleaned_data['email'],password=form.cleaned_data['password'])
user.save()
employee=Employee(user=user, email=form.cleaned_data['email'], password=form.cleaned_data['password'])
(...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With