我目前正在为django项目编写API,并使用django-piston进行此操作。但是,我需要自定义某些基本类型的序列化方式。
更确切地说,我的模型是从一个特殊的Model
类继承而来的,它继承自django.db.models.base.ModelBase
,但不能被序列化为常规的django模型...因此,我想重写序列化程序此特殊Model
类的所有子类。
我不太熟悉活塞......我看过代码,映射type->serializer
(基本类型)似乎是硬编码的。
有人知道是否有一种标准方法可以覆盖它吗?
答案 0 :(得分: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
答案 1 :(得分:1)
好的......我无法让它工作,所以我拿了一些我前段时间写过的代码,使它变得更干净,最终完成了一个完整的Python序列化框架SpitEat。我已经开始写一些文档,但这是一项正在进行的工作。
我已经放弃使用活塞,因为它不是第一次因为(de)序列化操作缺乏灵活性而让我失望。
SpitEat 旨在完全自定义(通过从更抽象的角度看待序列化,而不仅仅是“django对象”),并为Django提供序列化器,经过测试,但还没有很好地记录,以及仍然缺失的功能(同样是正在进行的工作)。