python - Signal configured but it still retruns UserProfile matching query does not exist -


the following form returns userprofile matching query not exist. though configured signal.

and works expected inetrpreter.

in [1]: core.models import user  in [2]: u = user.objects.get(id = 1)  in [3]: user_address = u.get_profile().home_address  in [4]: user_address = '20 st.' 

model

from django.db import models django.contrib.auth.models import user django.db.models.signals import post_save  class userprofile(models.model):     url = models.urlfield()     home_address = models.textfield()     user = models.foreignkey(user, unique=true)   def create_user_profile(sender, instance, created, **kwargs):     if created:         userprofile.objects.create(user=instance)  post_save.connect(create_user_profile, sender=user) 

view

from django.contrib.auth.forms import usercreationform django.contrib.auth.models import user, group django import forms django.shortcuts import render_to_response django.http import httpresponse django.template.context import requestcontext django.views.decorators.csrf import csrf_protect  class registerform(usercreationform):     """     hacking usercreationform class creating child class,     , overriding save mthod .save().     should provide email, first_name , last_name fields.     """     permission_choices = (             ('1', 'test1'),             ('2', 'test2'),             )     email      = forms.emailfield(required=false)     first_name = forms.charfield(required=false)     last_name  = forms.charfield(required=false)     url        = forms.urlfield()     permission = forms.choicefield(choices=permission_choices)      class meta(usercreationform.meta):         model = user         fields = ('first_name', 'last_name', 'url', 'username', 'email', 'password1', 'password2', 'permission')      def save(self, commit=true):         user = super(registerform, self).save(commit=false)         user_profile    = user.get_profile()         user.email      = self.cleaned_data['email']         user.first_name = self.cleaned_data['first_name']         user.last_name  = self.cleaned_data['last_name']         user.permission = self.cleaned_data['permission']         user_profile.url = self.cleaned_data['url']         if commit:             user.save()             user_profile.save()         return user  @csrf_protect def register(request):     if request.method == 'post':         form = registerform(request.post)         if form.is_valid():             new_user = form.save()             if new_user.permission == '1':                 try:                     new_user.groups.add(group.objects.get(name='test1'))                 except group.doesnotexist:                     u = user.objects.get(pk=new_user.pk)                     u.delete()                     return httpresponse('the organisation you\'ve choosed doesn\' exist')             return httpresponse('ok')     else:         form = registerform()      return render_to_response('registration/user.html', {'form': form}, context_instance=requestcontext(request)) 

like cberner said, think it's because:

i believe you're getting error because call super(registerform, self).save(commit=false). if use commit=false django wouldn't emit post_save signal, since model isn't committed database.

here's solution:

def save(self, commit=true):     user = super(registerform, self).save(commit=false)     user.email      = self.cleaned_data['email']     user.first_name = self.cleaned_data['first_name']     user.last_name  = self.cleaned_data['last_name']     user.permission = self.cleaned_data['permission']     user.save()      user_profile    = userprofile(user=user, url=self.cleaned_data['url'])     if commit:         user_profile.save()     return user 

i believe you're getting error because call super(registerform, self).save(commit=false). if use commit=false django wouldn't emit post_save signal, since model isn't committed database.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -