1
0
mirror of https://github.com/django/django.git synced 2025-07-05 02:09:13 +00:00

magic-removal: Modified caching strategy for descriptors to force re-evaluation of cache on the first get following a set. This is required to avoid duplication of the 'should I throw DoesNotExist' logic.

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2598 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2006-03-30 13:12:11 +00:00
parent 5072df1ac4
commit d4a6375fba

View File

@ -99,8 +99,11 @@ class SingleRelatedObjectDescriptor(object):
# Set the value of the related field # Set the value of the related field
setattr(value, self.related.field.rel.get_related_field().attname, instance) setattr(value, self.related.field.rel.get_related_field().attname, instance)
# Set the cache on the provided object to point to the new object # Clear the cache, if it exists
setattr(value, self.related.field.get_cache_name(), instance) try:
delattr(value, self.related.field.get_cache_name())
except AttributeError:
pass
class ReverseSingleRelatedObjectDescriptor(object): class ReverseSingleRelatedObjectDescriptor(object):
# This class provides the functionality that makes the related-object # This class provides the functionality that makes the related-object
@ -143,8 +146,11 @@ class ReverseSingleRelatedObjectDescriptor(object):
val = None val = None
setattr(instance, self.field.attname, val) setattr(instance, self.field.attname, val)
# Set the cache to point to the new object # Clear the cache, if it exists
setattr(instance, self.field.get_cache_name(), value) try:
delattr(instance, self.field.get_cache_name())
except AttributeError:
pass
class ForeignRelatedObjectsDescriptor(object): class ForeignRelatedObjectsDescriptor(object):
# This class provides the functionality that makes the related-object # This class provides the functionality that makes the related-object