4

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

我需要腌制一个引用 django 模型对象的复杂对象。标准酸洗过程将非规范化对象存储在泡菜中。因此,如果数据库中的对象在酸洗和解酸之间发生变化,则模型现在已经过时了。(我知道内存中的对象也是如此,但酸洗是解决它的方便时间。)

显然,将这​​个复杂的数据存储在数据库中会更干净,但这并不实用。随着项目的发展,它的代码必然会迅速变化。每次对象的数据模型更改时都必须更新数据库模式会大大降低项目的速度。

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

4

2 回答 2

1

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

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

这是没有意义的,因为视图函数一个页面请求,并且您的视图函数中有局部变量,可以在完成之前保留您的对象。

此外,Django 的 ORM 有一个缓存。

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

你不需要腌制任何东西。

于 2010-03-15T15:39:45.587 回答
0

您可以重载序列化方法。但是将 id 和 class 放在一个元组或 dict 中并腌制它会更简单。

于 2010-03-15T15:17:32.297 回答