Django

Code

Changeset 2574

Show
Ignore:
Timestamp:
03/28/06 10:51:17 (3 years ago)
Author:
adrian
Message:

Fixed #1548 -- Improved caching of related objects, so when clist = poll.get_choice_list(), each choice in clist has its poll cache filled. Thanks, Ned Batchelder

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/meta/__init__.py

    r2533 r2574  
    11771177        kwargs['%s__%s__exact' % (rel_field.name, rel_field.rel.to.pk.name)] = getattr(self, rel_field.rel.get_related_field().attname) 
    11781178    kwargs.update(rel_field.rel.lookup_overrides) 
    1179     return getattr(rel_mod, method_name)(**kwargs) 
     1179    related = getattr(rel_mod, method_name)(**kwargs) 
     1180 
     1181    # Cache the 'self' object for backward links. 
     1182    # Example: Each choice in Poll.get_choice_list() will have its poll cache filled. 
     1183    # Pre-cache the self object, for following links back. 
     1184    if method_name == 'get_list': 
     1185        cache_name = rel_field.get_cache_name() 
     1186        for obj in related: 
     1187            setattr(obj, cache_name, self) 
     1188    elif method_name == 'get_object': 
     1189        setattr(related, rel_field.get_cache_name(), self) 
     1190    return related 
    11801191 
    11811192# Handles adding related objects.