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