Django ORM 和单元工作

7 投票
2 回答
2766 浏览
提问于 2025-04-16 19:00

有没有什么简单的方法、库或者外部应用可以把“工作单元”这个概念引入到Django的ORM中?在复杂的模型设置中,你们通常用什么方法或技巧来解决同一行数据被导入两次的问题,同时又不失去模块化的特性呢?

编辑

示例

想象一下这样的情况:有一个模型叫做Location,它和自己有一个叫做路线的关系,这个关系通过另一个模型Route来实现。假设每个Route都有两个属性:entry_fare(进入这条路线需要支付的费用)和exit_fare(在另一端退出这条路线需要支付的费用)。现在假设你想要实现一个功能,就是增加entry_faresexit_fares的值。同时你还想计算某个城市的总费用。你可能希望在一个事务中执行一系列这样的操作。读取(计算总和)的频率远高于写入(增加费用)。

在一个简单的实现中,每次你想计算总和时,都需要加载一组新的模型,以确保没有过时的数据。而增加费用的操作每次也会在一组新的模型上进行,并且在费用增加后立即保存实例,以确保后续从数据库中获取的数据包含新的费用值。

记住,这只是一个示例。

2 个回答

1

你可以执行 原始SQL语句,或者 管理事务。使用 管理器 也能让你很方便地实现自定义功能,并对你的模型进行精确控制。如果你想的话,可以考虑使用 SQLAlchemy,它内置了对这些功能的支持。

听起来你主要对缓存模型感兴趣,django-cache-machine 可以通过使用 memcached 来处理缓存和失效。

1

我不太确定你在问什么,不过几年前,David Cramer 写了一个叫做 Django-identitymapper 的库——这个可能符合你的需求吗?

撰写回答