From 19e0d1e6a2bb46d46b988fbad188d8dd4288bf5e Mon Sep 17 00:00:00 2001 From: Stephen Burrows Date: Fri, 15 Oct 2010 10:43:42 -0400 Subject: [PATCH] Tweaked QuerySetMapper to return the value's value, in line with the changes to flexible attributes. Adjusted attribute fields to compensate. --- models/base.py | 6 +++++- models/fields.py | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/models/base.py b/models/base.py index 23cccb6..5d09f37 100644 --- a/models/base.py +++ b/models/base.py @@ -175,11 +175,15 @@ class QuerySetMapper(object, DictMixin): def __getitem__(self, key): try: - return self.queryset.get(key__exact=key).value + value = self.queryset.get(key__exact=key).value except ObjectDoesNotExist: if self.passthrough is not None: return self.passthrough.__getitem__(key) raise KeyError + else: + if value is not None: + return value.value + return value def keys(self): keys = set(self.queryset.values_list('key', flat=True).distinct()) diff --git a/models/fields.py b/models/fields.py index 0c31026..74a0525 100644 --- a/models/fields.py +++ b/models/fields.py @@ -129,7 +129,7 @@ class JSONAttribute(AttributeField): def value_from_object(self, obj): try: - return getattr(obj, self.attname).value + return getattr(obj, self.attname) except AttributeError: return None @@ -158,7 +158,7 @@ class ForeignKeyAttribute(AttributeField): def value_from_object(self, obj): try: - relobj = super(ForeignKeyAttribute, self).value_from_object(obj).value + relobj = super(ForeignKeyAttribute, self).value_from_object(obj) except AttributeError: return None return getattr(relobj, 'pk', None) -- 2.20.1