0

我有一些模型:

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}",
}

序列化后如何获取列表或字典?

4

1 回答 1

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
于 2017-02-08T11:35:52.727 回答