Hello,

ModelMultipleChoiceField fields cleaned data are lists, so you are trying to
create an object with a list of ids as id. Also I think you want to retrive
the object, in that case you have to use the get function of the model
manager (e.g.  Object.objects.get(id=someid). )
If you need to get all the options of a multiple choice field, you must use
a ManyToMany relationship instead of a ForeingKey.

Regards,
Matias.


On Fri, Oct 24, 2008 at 4:23 PM, Lar <[EMAIL PROTECTED]> wrote:

>
> 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'
>
> >
>


-- 
:wq

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to