【发布时间】:2011-01-27 17:29:46
【问题描述】:
我的应用使用“每用户会话”来允许来自同一用户的多个会话共享状态。它通过酸洗对象的操作与 django 会话非常相似。
我需要腌制一个引用 django 模型对象的复杂对象。标准酸洗过程将非规范化对象存储在泡菜中。因此,如果数据库中的对象在酸洗和解酸之间发生变化,那么模型现在已经过时了。 (我知道内存中的对象也是如此,但酸洗是解决它的方便时间。)
显然,将这个复杂的数据存储在数据库中会更简洁,但这并不实用。随着项目的发展,它的代码必然会迅速变化。每次对象的数据模型更改时都必须更新数据库架构会大大降低项目速度。
所以我想要一种不腌制完整 django 模型对象的方法。相反,只需存储其类和 id,并在加载时从数据库中重新获取内容。我可以为这个类指定一个自定义泡菜方法吗?如果有办法进行酸洗,我很高兴围绕 django 模型编写一个包装类来处理从 db 中的延迟获取。
【问题讨论】:
-
为什么要使用
pickle来保存数据?你能提供更多细节吗?在我看来,您最好将数据保存在数据库中 -
是的,将其存储在数据库中会更干净,但这并不实用。我要保存的对象非常复杂,并且随着项目的发展必然会迅速变化。每次我更改此对象存储的任何内容时都必须更新数据库架构,这会使项目陷入停顿。
-
请用其他事实更新您的问题。你拥有这个问题;您不仅限于将 cmets 串在一起。请更新问题。请解释为什么 JSON 不适合您的问题。