I appreciate all of your feedback! My comments inserted within the message below:
> What does cc.models.UserProfile looks like ? class UserProfile(models.Model): user = models.OneToOneField(User) thing = models.CharField(max_length=200) def __unicode__(self): return unicode(self.user) > This should be : > > ... except cc.models.UserProfile.DoesNotExist: > > As a general rule: > * NEVER use a bare except clause unless you reraise the SAME exception > in the except block. > * always catch the most specific exception type. Noted! Thank you for your guidelines. > Given the above statement, I assume the "models.py" file you're > talking about is not the one where you define your UserProfile class. > If yes - you may have legitimate reasons to split this between > different apps -, are you sure the models.py file where you set up > this signal handler is correctly registered and imported ? (hint: is > the app containing this models.py in your settings.INSTALLED_APPS ?) It is the same models.py file with the UserProfile class. Is this the incorrect way to set this up? I have a feeling I'm completely missing something. I have it registered under INSTALLED_APPS using the name of the project I created with startproject (myproject for the sake of example) and the name of the app via startapp: ..., 'myproject.cc', ..., > FWIW, you can insert print statements (poor man logging) in your > models.py file to make sure it's imported and check if the signal > handler is executed: > > # wherever/models.py > from django.db.models.signals import post_save > > print "in %s" % __name__ > > def profile_handler(sender, **kwargs): > """ Signal handler to deal with a save on the User model """ > try: > p = sender.userprofile > print "in %s : for user %s, profile %s already exists" % > (__name__, sender, p) > except cc.models.UserProfile.DoesNotExist: > profile = cc.models.UserProfile(user=sender) > profile.save() > print "in %s : for user %s, created profile %s " % (__name__, > sender, p) > except Exception, e: > print "in %s : for user %s, got unexpected exception %s" % > (__name__, sender, e) > raise > > print "in %s : connecting profile_handler to post_save signal" % > __name__ > post_save.connect(profile_handler, sender=User) > print "in %s : connected profile_handler to post_save signal" % > __name__ Thanks! I didn't know you could do that - I thought it would be gobbled up as invalid output by the http server so I hadn't tried. > <OT>While we're at it, the pythonic convention for indentations is 4- > spaces, no tabs</OT> Thank you for this as well! I'm both new to Django and Python - learning as I go. -- 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 django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.