Django REST框架 - 序列化和反序列化基元类型列表

时间:2013-06-22 23:03:07

标签: python serialization deserialization django-rest-framework

手头的任务是使用序列化程序来序列化基本类型列表,让我们说整数或字符串,然后再次反序列化此列表。这应该很容易,但不知怎的,我不能让它工作。我设法序列化一个简单的模型,它看起来像这样:

{'title': u'Something', 'description': u'sldfj', 'price': Decimal('78.56'), 'numbers': [3, 2, 1]}

...所以我必须要重建数字列表吗?我的Serializer看起来像这样:

class OfferSerializer(serializers.Serializer):
    title = serializers.CharField()
    description = serializers.CharField(required=False)
    price = serializers.DecimalField()
    numbers = serializers.IntegerField(required=False)

    def restore_object(self, attrs, instance=None):
        if instance:
            for key, val in attrs.items():
                setattr(instance, key, val)
            return instance

        return Offer(**attrs)

使用mongoengine可以简单地说ListField(IntField()),一切都很好。我是否必须编写自己的ListSerializer?

...谢谢

1 个答案:

答案 0 :(得分:2)

如果您只需要序列化,那么只需使用常规Field即可。

如果你也需要反序列化,那么编写自定义字段类型可能是最好的选择,因为rest框架还没有通用列表或dict容器字段。