My Models.py, Here I’m using OneToOneField here, to extend StudentProfile.
from django.db import models
from django.contrib.auth.models import User, UserManager
class SecretQuestion(models.Model):
question = models.CharField(max_length=200)
def __unicode__(self):
return self.question
class StudentProfile(models.Model):
user = models.OneToOneField(User)
batch = models.CharField(max_length=10)
course = models.CharField(max_length=20)
date_of_birth = models.DateField()
secret_question = models.ForeignKey(SecretQuestion)
answer = models.CharField(max_length=20)
contact = models.CharField(max_length=20)
And my registration view, I’m creating new user main_user and I’m using it to create Student Profile :-
def register_page(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
main_user = User.objects.create_user(
username= form.cleaned_data['username'],
password = form.cleaned_data['password1'],
)
user = StudentProfile.objects.create(
user_id = main_user.id,http://stackoverflow.com/questions/ask
batch=form.cleaned_data['batch'],
course=form.cleaned_data['course'],
date_of_birth=form.cleaned_data['date_of_birth'],
secret_question=form.cleaned_data['secret_question'],
answer=form.cleaned_data['answer'],
contact=form.cleaned_data['contact']
)
return HttpResponseRedirect('/register/success/')
else:
form = RegistrationForm()
variables = RequestContext(request, {'form': form})
return render_to_response('registration/register.html',variables)
After registering in Django, I’m getting,
FieldError at /register/
Cannot resolve keyword 'username' into field. Choices are: answer, batch, contact, course, date_of_birth, id, secret_question, user
This is happening after filling registration fields and pressing register button.
I’m not able to interpret this error. What does this mean?
You need to subclass
RegistrationFormas described in Adding extra fields to django-registration formUser.objects.create_userhas no keyword argument namedusername. The username must be the first positional argument:In the future, please include at least the line number where the error occurred.