#8660: Calling User.get_profile() should pre-populate the user foreign key on 
the
profile object
-------------------------------------+--------------------------------------
 Reporter:  mmalone                  |       Owner:  nobody    
   Status:  new                      |   Milestone:  post-1.0  
Component:  Authentication           |     Version:  SVN       
 Keywords:  cache profile user auth  |       Stage:  Unreviewed
Has_patch:  0                        |  
-------------------------------------+--------------------------------------
 When you use the User.get_profile() method to fetch a profile object, it
 doesn't pre-populate profile's user attribute. This results in unnecessary
 DB queries when you go from User -> UserProfile and then later go from
 UserProfile -> User. This is actually a fairly common use case because
 people tend to attach methods that "extend" the user object in
 UserProfile, since they can't directly extend User.

 For example, if you create a full_name() method on UserProfile that
 returns '%s %s' % (self.user.first_name, self.user.last_name), then in
 your templates, you do {{ User.get_profile.full_name }}, you end up doing
 two DB queries when only one in necessary.

 The solution seems simple enough since the profile's User object must be
 called `user`. In django/contrib/auth/models.py a one liner after fetching
 the profile should do the trick:

 {{{
   self._profile_cache =
 model._default_manager.get(user__id__exact=self.id)
 + self._profile_cache.user = self
 }}}

-- 
Ticket URL: <http://code.djangoproject.com/ticket/8660>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to