Django ORM 和单元工作
有没有什么简单的方法、库或者外部应用可以把“工作单元”这个概念引入到Django的ORM中?在复杂的模型设置中,你们通常用什么方法或技巧来解决同一行数据被导入两次的问题,同时又不失去模块化的特性呢?
编辑
示例
想象一下这样的情况:有一个模型叫做Location
,它和自己有一个叫做路线的关系,这个关系通过另一个模型Route
来实现。假设每个Route
都有两个属性:entry_fare
(进入这条路线需要支付的费用)和exit_fare
(在另一端退出这条路线需要支付的费用)。现在假设你想要实现一个功能,就是增加entry_fares
和exit_fares
的值。同时你还想计算某个城市的总费用。你可能希望在一个事务中执行一系列这样的操作。读取(计算总和)的频率远高于写入(增加费用)。
在一个简单的实现中,每次你想计算总和时,都需要加载一组新的模型,以确保没有过时的数据。而增加费用的操作每次也会在一组新的模型上进行,并且在费用增加后立即保存实例,以确保后续从数据库中获取的数据包含新的费用值。
记住,这只是一个示例。
2 个回答
1
你可以执行 原始SQL语句,或者 管理事务。使用 管理器 也能让你很方便地实现自定义功能,并对你的模型进行精确控制。如果你想的话,可以考虑使用 SQLAlchemy,它内置了对这些功能的支持。
听起来你主要对缓存模型感兴趣,django-cache-machine 可以通过使用 memcached 来处理缓存和失效。
1
我不太确定你在问什么,不过几年前,David Cramer 写了一个叫做 Django-identitymapper 的库——这个可能符合你的需求吗?