it seems fine, don't know why it shouldn't work, a different approach would
be to overide the models save method and add the user there.
On Monday, July 2, 2012 4:17:03 PM UTC+3, Nikhil Verma wrote:
>
> HI All
>
> I am applying an django-registration in my app. So i create a UserProfile
> Model and a ModelForm after clicking on the email link
> the user is redirected to the ModelForm page of UserProfile. I am filling
> the details and trying to save it, however i am getting the above error.
>
>
> Traceback:-
>
>
> Exception Type: ValueError at /myprofile/completingprofile/
> Exception Value: Cannot assign " object at 0x3487c10>": "UserProfile.user" must be a "User" instance.
>
>
> model
>
> class UserProfile(models.Model):
> user = models.ForeignKey(User, blank=True, null=True, unique=True)
> first_name = models.CharField(max_length=30)
> last_name = models.CharField(max_length=30, blank=True)
> gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
> mobile = models.CharField(max_length=15, blank=True)
> primary_email = models.EmailField(max_length=60, blank=True)
>
> # For professional Account
> institution_name =
> models.CharField(max_length=100,blank=True,null=True)
>
> street = models.CharField(max_length=75)
> state = models.CharField(max_length=30)
> zip_code = models.IntegerField(max_length=7, blank=True, null=True)
> country = models.CharField(max_length=30, blank=True)
>
>
> def __unicode(self):
> name = self.first_name + self.last_name
> return name
>
>
> form.py
>
> class UserProfileForm(ModelForm):
> class Meta:
> model = UserProfile
> exclude = ('user',)
>
> def __init__(self, *args, **kwargs):
> super(UserProfileForm, self).__init__(*args, **kwargs)
>
>
>
> views.py
>
> def completingprofile(request):
> """
> Creating Profile
> """
> print request
> if request.method == "POST":
>
> form = UserProfileForm(request.POST)
> if form.is_valid():
> userprofile_obj = UserProfile(
> first_name = form.cleaned_data['first_name'],
> last_name =
> form.cleaned_data['last_name'],
> gender = form.cleaned_data['gender'],
> mobile = form.cleaned_data['mobile'],
> institution_name = form.cleaned_data['institution_name'],
> street = form.cleaned_data['street'],
> zip_code = form.cleaned_data['zip_code'],
> state = form.cleaned_data['state'],
> country = form.cleaned_data['country'],
> user = request.user,# here i am trying to add user from
> request who is coming from RegistrationForm from django -registration
># I am getting the error in this above line
> )
> userprofile_obj.save()
> logger.info("Save profile for user: %s" % request.user)
>
> return HttpResponseRedirect('/thanks/')
> else:
> form = UserProfileForm()
> return render_to_response("myprofile/profile_page.html",
> {"form": form },
> context_instance=RequestContext(request)
> )
>
> How can i save the user field ?
>
>
> Thanks for help in advance
>
> --
> Regards
> Nikhil Verma
> +91-958-273-3156
>
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/vfRWqa6X_ywJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.