Reputation: 878
I have some model:
class Settings(mongoengine.Document):
name = mongoengine.StringField()
range = mongoengine.DynamicField()
And serializer for it:
class SettingsSerializer(serializers.DocumentSerializer):
class Meta:
model = Settings
fields = [
'name',
'range'
]
Field 'range' can be a dict or list. But, when I do serialize I got only string to this field:
{
"name": "hello world",
"range": "{'max': 100, 'min': 0}",
}
How can I get list or dict after serialize?
Upvotes: 0
Views: 347
Reputation: 4643
You can do that with python eval's method and DRF SerializerMethodField.
Try this.
from rest_framework import serializers as drf_serailizer
class SettingsSerializer(serializers.DocumentSerializer):
range = drf_serailizer.SerializerMethodField()
class Meta:
model = Settings
fields = [
'name',
'range'
]
def get_range(self, object):
try:
return eval(object.range)
except:
return None
Upvotes: 1