我的应用使用“每用户会话”允许来自同一用户的多个会话共享状态。它通过酸洗物体与django会话非常相似。
我需要挑选一个引用django模型对象的复杂对象。标准酸洗过程在泡菜中存储非规范化对象。因此,如果对象在pickling和unpickling之间在数据库上发生更改,则模型现在已过期。 (我知道内存中的对象也是如此,但酸洗是一个方便的时间来解决它。)
显然,将这个复合体存储在数据库中会更清晰,但这不实用。随着项目的发展,它的代码必然会迅速变化。每当对象的数据模型发生变化时,必须更新数据库模式会使项目减慢很多。
所以我想要的是一种不挑选完整的django模型对象的方法。而是只存储其类和id,并在加载时从数据库中重新获取内容。我可以为这个类指定一个自定义pickle方法吗?我很高兴在django模型周围编写一个包装类来处理从db中获取的延迟,如果有办法进行酸洗的话。
答案 0 :(得分:1)
目前还不清楚你的目标是什么。
“但是,如果我只是将id和类存储在一个元组中,那么每次使用任何django对象时我都必须返回数据库。我希望能够保留我的那些django对象。在页面请求的过程中在内存中使用。“
这没有意义,因为视图函数 是一个页面请求,并且你的视图函数中有局部变量可以保持你的对象,直到你完成。
此外,Django的ORM基于缓存。
最后,Django提供的会话是请求之间“内存中对象”的通常位置。
你不应该腌制任何东西。
答案 1 :(得分:0)
您可以重载序列化方法。但是将id和class放在元组或字典中并将其腌制更简单。