mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-17 04:10:24 +00:00
Nicer solution
This commit is contained in:
parent
922c49770e
commit
bbc076429a
1 changed files with 3 additions and 8 deletions
|
|
@ -69,6 +69,8 @@ class FieldInstanceTracker(object):
|
|||
|
||||
class DeferredAttributeTracker(DeferredAttribute):
|
||||
def __get__(field, instance, owner):
|
||||
if instance is None:
|
||||
return field
|
||||
data = instance.__dict__
|
||||
if data.get(field.field_name, field) is field:
|
||||
instance._deferred_fields.remove(field.field_name)
|
||||
|
|
@ -81,14 +83,7 @@ class FieldInstanceTracker(object):
|
|||
self.instance._deferred_fields = self.instance.get_deferred_fields()
|
||||
for field in self.instance._deferred_fields:
|
||||
if django.VERSION >= (1, 10):
|
||||
# Seems like a dj110 bug; have to consult the __dict__ of each
|
||||
# parent class to find the desired field.
|
||||
# TODO: Check if parents are being traversed in the correct order.
|
||||
combined_dict = {}
|
||||
for klass in self.instance.__class__._meta.get_parent_list():
|
||||
combined_dict.update(klass.__dict__)
|
||||
combined_dict.update(self.instance.__class__.__dict__)
|
||||
field_obj = combined_dict.get(field)
|
||||
field_obj = getattr(self.instance.__class__, field)
|
||||
else:
|
||||
field_obj = self.instance.__class__.__dict__.get(field)
|
||||
field_tracker = DeferredAttributeTracker(
|
||||
|
|
|
|||
Loading…
Reference in a new issue