Hi,
I've been beating my head against this for a couple of days. I am
creating a User with additional information stored in a profile
model. I create the user, then create the profile object. I get the
form information and if it is valid, I just want to save the
information and do a bit more processing.
Two questions:
1. Why is the profile information not saving?
2. If I want to access the activation_string for a specific user and
change it's value, how do I do that? I'm sure the way I'm trying to
do it is incorrect.
Any assistance would be appreciated.
Thanks,
Laura
**********I have this Model:
class StudentProfile(models.Model):
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
province = models.CharField(max_length=30)
postalcode = models.CharField(max_length=50)
telephone = models.CharField(max_length=12)
memberoffice = models.ForeignKey('memberoffices.MemberOffice')
creationdate = models.DateTimeField(auto_now_add=True)
activated = models.BooleanField(default=False)
activation_string = models.CharField(max_length=30, unique=True)
activationdate = models.DateTimeField(null=True)
user = models.ForeignKey(User,unique=True)
**********I have set it up in settings.py this way:
AUTH_PROFILE_MODULE = 'students.StudentProfile'
********** I have this form:
class StudentForm(forms.Form):
username = forms.CharField(max_length=30)
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.EmailField()
password1 =
forms.CharField(max_length=30,widget=forms.PasswordInput(render_value=False))
password2 =
forms.CharField(max_length=30,widget=forms.PasswordInput(render_value=False))
address = forms.CharField(max_length=50)
city = forms.CharField(max_length=60)
province = forms.CharField(max_length=30)
postalcode = forms.CharField(max_length=50)
telephone = forms.CharField(max_length=12)
memberoffice =
forms.ModelMultipleChoiceField(queryset=MemberOffice.objects.all())
**********and this save routine associated with the form to save it:
def save(self):
newstudent =
User.objects.create_user(username=self.cleaned_data['username'],
email=self.cleaned_data['email'],
password=self.cleaned_data['password1'])
newstudent.is_staff = False
newstudent.first_name = self.cleaned_data['first_name']
newstudent.last_name = self.cleaned_data['last_name']
newstudent.save()
try:
newStudentProfile = request.newstudent.get_profile()
except:
newStudentProfile = StudentProfile(user=newstudent)
newStudentProfile.address =
self.cleaned_data['address']
newStudentProfile.city = self.cleaned_data['city']
newStudentProfile.province =
self.cleaned_data['province']
newStudentProfile.postalcode =
self.cleaned_data['postalcode']
newStudentProfile.memberoffice =
MemberOffice(id=self.cleaned_data['memberoffice'])
newStudentProfile.save()
return newstudent
**********This is the controlling view.py file:
def registerstudent(request,language):
if request.POST:
form = StudentForm(data=request.POST)
if form.is_valid():
newstudent = form.save()
newstudent.get_profile().activation_string =
generate_activation_string()
email_content =
create_activation_email_content(newprofile.activation_string)
send_activation_email(newstudent.first_name,newstudent.email,email_content)
return HttpResponse('You\'ll receive an email. Click the
link in the email.')
else:
errors = form.errors
return HttpResponse(errors)
else:
form = StudentForm()
return render_to_response('englishpublic/register.html',
{'form':form,})
**********This is the error/traceback:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/english/register/
Django Version: 1.0-final-SVN-unknown
Python Version: 2.5.1
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.flatpages',
'django.contrib.admindocs',
'endeavor.students',
'endeavor.memberoffices',
'endeavor.membermanagers',
'endeavor.courses',
'endeavor.courseproviders']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware')
Traceback:
File "/Library/Python/2.5/site-packages/django/core/handlers/base.py"
in get_response
86. response = callback(request, *callback_args,
**callback_kwargs)
File "/Users/laurarey/LAR Studios/endeavor/../endeavor/students/
views.py" in registerstudent
29. newstudent = form.save()
File "/Users/laurarey/LAR Studios/endeavor/../endeavor/students/
forms.py" in save
55. newStudentProfile.save()
File "/Library/Python/2.5/site-packages/django/db/models/base.py" in
save
307. self.save_base(force_insert=force_insert,
force_update=force_update)
File "/Library/Python/2.5/site-packages/django/db/models/base.py" in
save_base
367. values = [(f, f.get_db_prep_save(raw and
getattr(self, f.attname) or f.pre_save(self, True))) for f in
meta.local_fields if not isinstance(f, AutoField)]
File "/Library/Python/2.5/site-packages/django/db/models/fields/
related.py" in get_db_prep_save
665. return
self.rel.get_related_field().get_db_prep_save(value)
File "/Library/Python/2.5/site-packages/django/db/models/fields/
__init__.py" in get_db_prep_save
192. return self.get_db_prep_value(value)
File "/Library/Python/2.5/site-packages/django/db/models/fields/
__init__.py" in get_db_prep_value
353. return int(value)
Exception Type: TypeError at /english/register/
Exception Value: int() argument must be a string or a number, not
'list'
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---