Сериализация DynamicField
У меня есть модель:
class Settings(mongoengine.Document):
name = mongoengine.StringField()
range = mongoengine.DynamicField()
И сериализатор для него:
class SettingsSerializer(serializers.DocumentSerializer):
class Meta:
model = Settings
fields = [
'name',
'range'
]
Поле "диапазон" может быть диктом или списком. Но, когда я делаю сериализацию, я получил только строку в это поле:
{
"name": "hello world",
"range": "{'max': 100, 'min': 0}",
}
Как я могу получить список или диктовать после сериализации?
1 ответ
Решение
Вы можете сделать это с помощью метода python eval и DRF SerializerMethodField.
Попробуй это.
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