如何自定义django模型对象的pickle

我的应用程序使用“每用户会话”来允许来自同一用户的多个会话共享状态。 它通过酸洗对象与django会话非常类似。

我需要腌制一个指向django模型对象的复杂对象。 标准酸洗过程在酸菜中存储非规格化对象。 因此,如果对象在酸洗和取消打印之间发生更改,则该模型现在已过时。 (我知道这对于内存中的对象也是如此,但酸洗对于解决它来说是一个方便的时间。)

显然,将这​​个复合体存储在数据库中会更清洁,但这并不实际。 随着项目的发展,它的代码必然会迅速变化。 每次对象的数据模型更改时必须更新数据库模式会使项目速度下降很多。

所以我想要的是一种不腌制完整的django模型对象的方法。 相反,只需存储其类和id,并在加载时从数据库中重新获取内容。 我可以为这个类指定一个自定义的pickle方法吗? 如果有办法进行酸洗,我很乐意在django模型中编写一个包装类来处理来自数据库的延迟读取。


目前还不清楚你的目标是什么。

“但是,如果我只是将id和class存储在一个元组中,那么每次使用任何django对象时都必须返回到数据库。我希望能够保留在内存中使用的那些对象在一个页面请求的过程中“。

这是没有意义的,因为视图函数一个页面请求,并且你的视图函数中有局部变量可以让你的对象保持到你完成。

此外,Django的ORM基于缓存。

最后,Django提供的会话是请求之间“内存中对象”的通常位置。

你不应该腌任何东西。


您可以重载序列化方法。 但将id和class放在一个元组或字典中并将其浸泡就更简单了。

链接地址: http://www.djcxy.com/p/60199.html

上一篇: How to customize pickle for django model objects

下一篇: How can jQuery deferred be used?