Skip to content

Commit 6495878

Browse files
author
Umut Bozkurt
committed
ObjectId serialisation on ListField(ReferenceField) fix
1 parent 203fe66 commit 6495878

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

rest_framework_mongoengine/fields.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from mongoengine.base.document import BaseDocument
66
from mongoengine.document import Document
77
from rest_framework import serializers
8+
from mongoengine.fields import ObjectId
9+
810
import sys
911

1012
if sys.version_info[0] >= 3:
@@ -66,8 +68,8 @@ def transform_object(self, obj, depth):
6668
elif obj is None:
6769
return None
6870
else:
69-
# Default to string
70-
return unicode(obj)
71+
print obj
72+
return unicode(obj) if isinstance(obj, ObjectId) else obj
7173

7274

7375
class ReferenceField(MongoDocumentField):
@@ -101,7 +103,7 @@ def from_native(self, value):
101103
return self.model_field.to_python(value)
102104

103105
def to_native(self, obj):
104-
return [self.model_field.to_mongo(list_item) for list_item in obj]
106+
return self.transform_object(obj, self.depth)
105107

106108

107109
class EmbeddedDocumentField(MongoDocumentField):
@@ -134,4 +136,4 @@ class DynamicField(MongoDocumentField):
134136
type_label = 'DynamicField'
135137

136138
def to_native(self, obj):
137-
return self.model_field.to_python(obj)
139+
return self.model_field.to_python(obj)

0 commit comments

Comments
 (0)