0

我目前正在为 django 项目编写 API,并为此使用 django-piston。但是,我需要自定义某些基本类型的序列化方式。

更准确地说,我的模型是一个特殊Model类的子类,它继承自django.db.models.base.ModelBase,但不能作为常规 django 模型序列化......因此,我想为这个特殊Model类的所有子类重写序列化程序。

我不太了解活塞...我查看了代码,映射type->serializer(对于基本类型)似乎是硬编码的。

有谁知道是否有标准的方法来覆盖它???

4

2 回答 2

1

您可以自己进行序列化。处理程序只期望并返回一个 python 字典。但是,为此,您不能只将其插入模型中。为您的基本类型创建自己的资源处理程序,它能够从 dict 构建您的模型。

class ModelHandler(HandlerBase):
    allowed_methods = ('Get',)

    def read(self, request, id=None):
        if id is not None:
            m = Model.objects.get(id=id)

        ret = {}
        ret['field'] = m.field

        return ret
于 2010-10-19T08:48:07.547 回答
1

好的......我无法让它工作,所以我拿了一些我前一段时间自己编写的代码,让它更干净,它最终出现在一个完整的 Python 序列化框架SpitEat中。我已经开始编写一些文档,但这是一项正在进行的工作。

我已经放弃了使用活塞,因为这不是第一次因为它在(反)序列化操作上缺乏灵活性而让我失望。

SpitEat旨在完全可定制,(通过从比“django 对象”更抽象的角度查看序列化)并为 Django 提供序列化程序,经过测试,但还没有很好的文档记录,并且仍然缺少一些功能(再次是一项正在进行的工作)。

于 2010-10-27T12:20:55.217 回答