ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 如何为django模型对象自定义pickle

2019-07-10 09:56:49  阅读:227  来源: 互联网

标签:python django pickle


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

我需要挑选一个引用django模型对象的复杂对象.标准酸洗过程在泡菜中存储非规范化对象.因此,如果对象在pickling和unpickling之间在数据库上发生更改,则模型现在已过期. (我知道内存中的对象也是如此,但是酸洗是一个方便的时间来解决它.)

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

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

解决方法:

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

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

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

此外,Django的ORM基于缓存.

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

你不应该腌制任何东西.

标签:python,django,pickle
来源: https://codeday.me/bug/20190710/1422944.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有