问题标签 [django-models]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
16294 浏览

python - 如何动态检索 Django 模型类?

如果没有 Django 模型的完整模块路径,是否可以执行以下操作:

...相对于:

编辑:我正在尝试根据命令行输入进行此调用。是否可以避免导入语句,例如,

没有 Django 返回错误:

0 投票
5 回答
9678 浏览

django - 如何在 Django 中定义模型之间的多态关系?

我正在开发一个包含Offer模型的 Django 应用程序。实例Offer包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有一个Television模型,一个Camcorder模型等)。所以我希望Offer模型包含一个多态(或“通用”)关联来指向任何产品。

目前,我所发现的只是在应用程序中使用通用关联ContentTypes。这可能会,但我正在寻找替代品,如果有的话。

谢谢你的帮助。

(请每个答案一个解决方案)

0 投票
5 回答
2724 浏览

django - 如何在 Django 中进行文本完整历史记录?

我想拥有用户编辑的大型文本字段的完整历史记录,使用 Django 存储。

我看过的项目:

我有一个特殊的用例,它可能超出了这些项目提供的范围。此外,我对这些项目的文档记录、测试和更新情况持谨慎态度。无论如何,这是我面临的问题:

我有一个模型,就像这样:

这个文本字段可能很大 - 超过 40k - 我想要一个自动保存功能,每 30 秒左右保存一次字段。很明显,如果有很多每个 40k 的保存(如果压缩,可能仍然是 10k),这可能会使数据库变得非常大。我能想到的最佳解决方案是在最近保存的版本和新版本之间保持差异。

但是,我担心涉及并行更新的竞争条件。我想到了两种不同的比赛条件(第二个比第一个严重得多):

  1. HTTP 事务竞争条件:用户 A 和用户 B 请求文档 X0,并分别进行更改,产生 Xa 和 Xb。Xa 被保存,X0 和 Xa 之间的区别是“Xa-0”(“a less not”),Xa 现在作为正式版本存储在数据库中。如果 Xb 随后保存,它将覆盖 Xa,差异为 Xb-a(“b 减去 a”)。

    虽然不理想,但我并不过分担心这种行为。文档相互覆盖,用户 A 和 B 可能不知道彼此(每个都从文档 X0 开始),但历史记录保持完整性。

  2. 数据库读取/更新竞争条件:有问题的竞争条件是 Xa 和 Xb 同时保存超过 X0。将有(伪)代码,例如:

    如果 Xa 和 Xb 都从数据库中读取 X0(即 orig_doc 是 X0),它们的差异将变为 Xa-0 和 Xb-0(相对于序列化的 Xa-0 然后 Xb-a,或者等效地 Xb-0 然后 Xa-乙)。当您尝试将差异修补在一起以生成历史记录时,它会在补丁 Xa-0 或 Xb-0(两者都适用于 X0)上失败。历史的完整性已经受到损害(或者已经受到损害?)。

    一种可能的解决方案是自动协调算法,它可以事后检测这些问题。如果重建历史失败,人们可能会假设发生了竞争条件,因此将失败的补丁应用于历史的先前版本,直到它成功。

我很高兴收到一些关于如何解决这个问题的反馈和建议。

顺便说一句,就它是一种有用的出路而言,我注意到这里讨论了 Django 原子性:

非常感谢你。

0 投票
13 回答
225565 浏览

python - Django 中的“蛞蝓”是什么?

当我阅读 Django 代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与 URL 有关。这个蛞蝓应该如何以及何时使用?

(我已经在这个词汇表中阅读了它的定义。)

0 投票
2 回答
875 浏览

django - 保存具有多对多关系的对象

我有模型(简化示例):

我想将任务分配给某些人,并添加属于该组的所有人员,以及稍后添加其他人(或从任务中删除特定人员)。显然不会执行保存,因为对象在要添加多对多关系对象时没有id。如何处理这种情况?我尝试在将人员添加到任务之前保存,然后再次保存,但没有奏效。

问候
克里斯

0 投票
3 回答
4762 浏览

python - django中的有序列表

我有一个非常简单的问题。我需要创建模型,代表有序列表的元素。这个模型可以这样实现:

或像这样:

首选什么方式?每种解决方案有什么缺点?

0 投票
5 回答
17966 浏览

python - 在每个测试方法之前清理 django 中的数据库

默认情况下,当 Django 针对 sqlite 后端运行时,它会在内存中创建一个新的数据库进行测试。这意味着对于从 unittest.TestCase 派生的每个类,我都会获得一个新数据库。可以更改它以便在运行每个测试方法之前将其清除吗?

示例:我正在测试一个在 Django 持久对象之上提供额外抽象的管理器类。代码看起来更像那样

现在,第二个测试的第一个断言失败,因为数据库的状态在测试调用之间被保留并且数据库中已经有一个实例Blah

0 投票
1 回答
4947 浏览

django - Django - 带有伴随存储字段的自定义虚拟模型字段

我想要一个ConfirmationField字段类型。我希望这个字段像布尔字段一样工作。我不需要将此信息存储在数据库中,而是希望将确认日期存储在单独的字段中。

我需要将这两个字段都作为Field实例,例如,我需要能够在 Admin 中使用它们。

我已阅读文档并检查代码,ForeignKey使用以下代码更改其数据库列名称:

但是我无法确切地弄清楚如何使用其余代码作为示例。看来我的目标不需要太复杂。

保存模型时,我还发现ImageField了保存的额外信息:

但我当然不希望confirmation自己存储在数据库中。confirmation_timestamp由于 ( -> confirmation) None==False<datetime instance>== ,我会造成冗余True

任何指针/想法表示赞赏。

谢谢。

编辑:目前看来这是不可能的。我最终改变了我的 API。这是一个snipplet,可以说明我是如何做到的:

您可以拥有上述任何类型的确认字段,并设置正确的值。确认检查可以用bool(getattr(instance, field_name).

0 投票
17 回答
34022 浏览

python - 在 Django 中复制模型实例及其相关对象/用于递归复制对象的算法

我有Books,Chapters和的模型Pages。它们都是由 a 编写的User

我想做的是复制现有的Book并将其更新User给其他人。皱纹是我还想将所有相关的模型实例复制到-Book一切都是如此!ChaptersPages

看 a 时事情变得非常棘手Page-新对象不仅需要更新Pagesauthor字段,而且还需要指向新Chapter对象!

Django 支持开箱即用的方式吗?复制模型的通用算法是什么样的?

干杯,

约翰


更新:

上面给出的类只是说明我遇到的问题的一个例子!

0 投票
2 回答
617 浏览

python - 有没有办法自动生成需要索引的列列表?

ORM 的美丽让我睡着了。我有一个缺少数据库索引的现有 Django 应用程序。有没有办法自动生成需要索引的列列表?

我在想也许是一些中间件记录了 WHERE 子句中涉及哪些列?但是有什么内置到 MySQL 中可能会有所帮助吗?