Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ORM&;工作单位_Python_Django_Orm_Django Models_Django Orm - Fatal编程技术网

Python Django ORM&;工作单位

Python Django ORM&;工作单位,python,django,orm,django-models,django-orm,Python,Django,Orm,Django Models,Django Orm,是否有任何简单的方法/库/外部应用程序将工作单元概念引入Django ORM?您使用什么方法或技术来解决在复杂的模型设置中两次导入同一行而不丢失所有模块性的问题 编辑 范例 考虑以下示例情况-有一个模型位置,它通过另一个模型路线与其自身有关系,称为路线。现在,让我们假设每条路线都有称为的属性:进入票价(进入路线所需支付的金额)和退出票价(离开路线另一端所需支付的金额)。现在让我们假设您想要实现一个操作,即增加入口票价和增加出口票价。您还希望能够计算给定城市的票价总额。您可能希望在单个事务中执行一

是否有任何简单的方法/库/外部应用程序将工作单元概念引入Django ORM?您使用什么方法或技术来解决在复杂的模型设置中两次导入同一行而不丢失所有模块性的问题

编辑

范例

考虑以下示例情况-有一个模型
位置
,它通过另一个模型
路线
与其自身有关系,称为路线。现在,让我们假设每条
路线
都有称为的属性:
进入票价
(进入路线所需支付的金额)和
退出票价
(离开路线另一端所需支付的金额)。现在让我们假设您想要实现一个操作,即增加
入口票价
和增加
出口票价
。您还希望能够计算给定城市的票价总额。您可能希望在单个事务中执行一系列这样的操作。读取(计算总和)比写入(增加票价)更频繁

在一个简单的实现中,您需要在每次计算总和时加载一组新的模型,以确保没有过时的数据。此外,每次增强都会在一组新的模型上运行,并在票价增强后立即保存实例,以确保从数据库中进一步获取的数据包括新的票价值


记住,这只是一个例子。

我不完全确定你在问什么,但几年前David Cramer写了一个库,名为-这符合要求吗?

你可以执行,或者。还可以非常轻松地实现自定义功能和对模型的精确控制。你可能想考虑使用它,它有内置的支持。
听起来您最感兴趣的是缓存模型,使用memcached处理缓存/失效。

raw SQL-在大多数情况下完全违反了模块化。托管事务-我看不到与该主题有任何直接联系。经理-我认为你必须更具体地说明你想推荐哪种定制经理。SQLAlchemy-是的,但我特别询问了Django ORM。此外,在Django中去掉Django ORM实际上破坏了大部分应用程序。我对“工作单元”的理解是一组受管理的操作,因此事务管理对于实现该模式至关重要。也许你可以在你的问题中定义你的工作单元的概念?如果没有其他帮助,它将帮助人们在将来阅读你的问题。我的意思是:。别误会我的意思,这与交易有很大关系,但这些交易并不是这里最难的部分。难的部分是什么?可以将示例编辑得更明确一点吗?一个精确的示例,概述了所涉及的模型、对它们的操作、您希望如何管理事务、默认行为与预期行为?Django已经为您提供了非常简单的事务控制、跟踪对象状态等功能。我不明白它没有做什么,这是您想要的。在这个设置中,没有简单的方法引入模型缓存,对吗?UoW所做的是只保留每个模型一次,即使代码中有多个地方试图加载它。在Django ORM中,您将获得表示数据库中同一行的多个实例。如果更新其中一个,则另一个将过时。如果不引入缓存,那么在一遍又一遍地读取相同的数据时会产生很大的开销,从而导致数据库崩溃。在UoW中,每一行(例如route)只读取一次。然后只保存一次。有趣的是,我们将对此进行研究。如果有多个线程,它会为每个线程保留一个模型实例吗?