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