当我设置'已删除'标志时,Django表行被神奇地从ORM隐藏

时间:2017-07-21 22:18:52

标签: django postgresql orm

使用继承的代码库。

当我从API或管理站点查看时,我有一个包含2个对象的表,但是当我在PostgreSQL中执行select *时它有3个对象。

 name  |            created            | deleted
-------+-------------------------------+------------
 Sweet | 2017-07-21 16:31:28.556949-05 | t
 qwer  | 2017-07-21 16:36:03.096954-05 | t
 asdf  | 2017-07-21 16:35:15.585589-05 | f
(3 rows)

该表中有一个'已删除'标志,似乎是一个自动软删除标志。如果我通过SQL将标志设置为true,则它对ORM可见。如果我通过SQL将标志设置为false,则它将从ORM中隐藏。

这种特殊类型的自动化非常无用,我想禁用它,但我想在删除列之前了解它在Django中是如何工作的。

我没有使用任何特殊的东西来支持这种行为。我找到了描述如何通过继承支持它的特殊模型实现软删除的文章,但我没有做到这一点。这只是models.Model的一个vanilla子类。我用谷歌搜索并搜索了Django文档,我没有看到任何表明只有一个“删除”列给你软删除的东西。

我的问题是:

  1. Django是否有某种自动软删除支持?
  2. 如果是,我在哪里可以找到文档?
  3. 如果没有,是否有其他自动机制我不理解?

1 个答案:

答案 0 :(得分:0)

@knbk引导我回答:

有一个与该模型相关联的Manager类,其get_queryset()方法通过“删除的”'过滤了任何查询集操作。标志。