From ae1ef300f78a0ee105ac3adc46e01a2754da631c Mon Sep 17 00:00:00 2001 From: Benjamin Turner Date: Mon, 9 Feb 2015 21:33:06 -0800 Subject: [PATCH 1/2] adds GenericRelation to _to_basic_type --- conduit/api/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/conduit/api/base.py b/conduit/api/base.py index e1afc83..788e1a8 100644 --- a/conduit/api/base.py +++ b/conduit/api/base.py @@ -6,7 +6,7 @@ from django.db.models.fields import FieldDoesNotExist from django.db import models from django.conf.urls import url -from django.contrib.contenttypes import generic +from django.contrib.contenttypes import fields, generic from decimal import Decimal from dateutil import parser @@ -872,6 +872,9 @@ def _to_basic_type(self, obj, field): if isinstance(field, models.ManyToManyField): return eval(field.value_to_string(obj)) + if isinstance(field, fields.GenericRelation): + return field.value_to_string(obj) + logger.info('Could not find field type match for {0}'.format(field)) return None From 3330170e53de7cb94e72a781594d7b218bc9f715 Mon Sep 17 00:00:00 2001 From: Benjamin Turner Date: Mon, 9 Feb 2015 22:53:41 -0800 Subject: [PATCH 2/2] adds RelatedObject --- conduit/api/base.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/conduit/api/base.py b/conduit/api/base.py index 788e1a8..01ba39a 100644 --- a/conduit/api/base.py +++ b/conduit/api/base.py @@ -872,6 +872,13 @@ def _to_basic_type(self, obj, field): if isinstance(field, models.ManyToManyField): return eval(field.value_to_string(obj)) + if isinstance(field, models.related.RelatedObject): + for virtual_field in self.Meta.model._meta.virtual_fields: + if virtual_field.name == 'content_object': + related_obj = getattr(obj, virtual_field.name) + return field.field.value_to_string(related_obj) + return None + if isinstance(field, fields.GenericRelation): return field.value_to_string(obj)