我的应用程序使用“每个用户会话”来允许同一用户的多个会话共享状态。它的操作方式与 Django 会话非常相似,都是通过 pickling 对象实现的。
我需要 pickling 一个引用了 Django 模型对象的复杂对象。标准的 pickling 过程会将一个反规范化的对象存储在 pickle 中。因此,如果在 pickling 和 unpickling 之间数据库中的对象发生更改,则模型现在已过时。(我知道内存中的对象也是如此,但 pickling 是解决这个问题的方便时机。)
显然,将这个复杂对象存储在数据库中会更简洁,但这并不切实际。它的代码随着项目的发展而必然不断变化。每当对象的数据模型发生变化时,都必须更新数据库模式,这会大大减慢项目的进度。
所以,我希望能够不要 pickle 完整的 Django 模型对象。而只是存储它的类和 ID,并在加载时从数据库中重新获取内容。我可以为这个类指定一个自定义的 pickle 方法吗?如果有办法进行 pickling,那么我很乐意编写一个 wrapper 类来处理从数据库中延迟获取,
我需要 pickling 一个引用了 Django 模型对象的复杂对象。标准的 pickling 过程会将一个反规范化的对象存储在 pickle 中。因此,如果在 pickling 和 unpickling 之间数据库中的对象发生更改,则模型现在已过时。(我知道内存中的对象也是如此,但 pickling 是解决这个问题的方便时机。)
显然,将这个复杂对象存储在数据库中会更简洁,但这并不切实际。它的代码随着项目的发展而必然不断变化。每当对象的数据模型发生变化时,都必须更新数据库模式,这会大大减慢项目的进度。
所以,我希望能够不要 pickle 完整的 Django 模型对象。而只是存储它的类和 ID,并在加载时从数据库中重新获取内容。我可以为这个类指定一个自定义的 pickle 方法吗?如果有办法进行 pickling,那么我很乐意编写一个 wrapper 类来处理从数据库中延迟获取,
pickle
来保存你的数据?你能给出更多细节吗?在我看来,你最好将数据保存在数据库中。 - Zach