问题标签 [django-reversion]

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 投票
1 回答
521 浏览

python - 如何在 django reversion 中存储父指针和数据?

我在我设置的 django-reversion 系统的一些代码上遇到了一些问题。

我有一个ObjectClass继承自非抽象模型的 django 模型_concept很长的故事,现在非常不变。在代码的其余上下文中有意义。

在课堂上,_concept我将强制ForeignKey字段workgroup转到另一个模型。

我已经ObjectClass像这样注册了Django reversion:

所有旧版本都保存并可以使用 'django-reversion-compare' 进行比较。不幸的是,当我点击任何旧版本查看历史版本时,我得到了错误:

在对 django-reversion 代码进行了一些挖掘之后,我做了一些摆弄,发现错误正在出现:

现在我检查了数据库中存储的版本,发现了一些东西:

  1. 任何给定reversion.models.version的 _concept 历史在该serialized_data领域都有一个工作组(这是预期的)。
  2. 任何给定reversion.models.version的 a历史ObjectClass 都没有该字段中的任何父信息serialized_data(这是预期的)。
  3. 任何给定reversion.models.version的 an历史ObjectClass 都没有任何 a_concept_ptr在该serialized_data字段中(这是期望的)。

我怀疑django-reversion以下划线开头的字段可能存在问题,但是我还有其他以下划线开头的字段。

所以我在这里不知所措。有没有办法让这个模型设置像这样工作?


编辑:

经过更多检查后,似乎异常来自 Haystack 调用,这提醒我由于某种原因忽略了工作组has no workgroup的事实。reversion

我检查了数据库,这是为一个项目序列化的内容(为便于阅读而添加了换行符):


编辑2:

禁用 haystack 索引器后,现在一切正常,问题是当 django-reversion 尝试保存项目以检查一致性时调用 Haystack 信号 - 然后 django 调用 haystackpost_save信号尝试使用不完整的数据更新索引。

仍然没有解决方案。我在我的 haystack 处理程序中需要的是一种确定我是否在修订事务中的方法,或者一种防止还原让这些信号触发的方法。后者可能是一个更好的长期目标,因为我怀疑仅仅通过查看修订它正在更新 Haystack 索引。

0 投票
1 回答
523 浏览

django - 无法将 VersionAdmin 与不支持保存点的数据库一起使用

我使用 django-reversion 并且我突然遇到了这个错误。

django.core.exceptions.ImproperlyConfigured:不能将 VersionAdmin 与不支持保存点的数据库一起使用。

它发生在线上 admin.site.register(Post,PostAdmin)

尽管在我的生产中一切正常,但无法在我的本地使用 python manage.py。

甚至尝试更改数据库(postgresql)但无济于事。

0 投票
1 回答
353 浏览

python - 删除外键模型对象后模型不创建版本(django-reversion)

我有 2 节课:

在大多数情况下它工作正常。例如,当我对 ContactInternal 进行更改时,会为 SysApp 创建一个新版本。对它的工作方式非常满意。

但是,如果我删除从 链接的记录SysApp.internalcontact,则不会为 SysApp 创建任何版本。

实际上,我想要实现的只是获取 SysApp 的最后修改日期的时间戳以及哪个用户(不需要回滚)。我想知道

我该怎么做django-reversion?还是有另一种方法可以实现这一目标?

  • 注意:SysApp 中还有另一个字段是 M2M 我也想达到相同的结果。
0 投票
1 回答
105 浏览

django-reversion - django reversion 和 get__展示

我有一个这样的模型:

我想使用 django-reversion 跟踪用户更改

使用默认示例显示更改

返回

但我想像这样返回选择值:

0 投票
1 回答
167 浏览

django - 撤消密集数据库中的级联删除

我有一个相当大的生产数据库系统,基于大量的节点层次结构,每个节点都有 10 多个关联模型。如果有人删除了树中相当高的节点,可能会删除数千个模型,如果删除是错误的,那么恢复它们可能会非常困难。我正在寻找一种方法来给我一个简单的“撤消”选项。

我尝试过使用 Django-reversion,但似乎为了获得我想要的功能(轻松恢复大型级联删除),它需要在每个修订版中存储一堆信息。当我创建初始修订时,该过程完成不到 10%,并且它已经在我的数据库中使用了 8GB,这对我来说不起作用。

那么,这个问题有标准的解决方案吗?或者一种自定义 Django-reversions 以适应我的用例的方法?

0 投票
1 回答
300 浏览

python - Django-Reversion:访问 QuerySet 数据

我有一个使用 Django-Reversion 进行版本控制的模型。在终端窗口中,我可以使用以下命令访问模型实例的所有先前版本:

当我检查versions它是一组所有以前的版本。但是,当我在视图中调用相同的函数并尝试将其添加到上下文中时,我会得到一个单一的VersionQuerySet,我无法弄清楚如何迭代并从中提取数据。

有什么建议么?

0 投票
1 回答
2028 浏览

python - 使用 django-reversion 显示模型实例的更改日志历史记录

使用: django 1.10 版本 2.0.8。

我的问题是如何显示对给定模型实例所做的更改的漂亮列表。我的意思是用户可以快速查看所有修订中的所有更改(字段的新值)的列表。他不需要查看所有字段,只需要查看已更改字段的新值。

所以我发现一个很好的存储更改的工具是 django-reversion。但是,我找不到我的问题的解决方案,正如我所提到的,它是为给定模型实例显示一个很好的更改日志历史记录。

我找到了可以比较两个修订版django-reversion-compare 的解决方案,但这不是我想要的。也许有更好的工具呢?

该任务太快地向用户显示由谁以及何时更改的内容。该模型很简单,不存储大量数据。但是它确实存储了外键。

0 投票
0 回答
80 浏览

django - Django reversion - 使用旧模型子获取旧模型(获取历史对象)

我正在尝试获取对象的旧版本,然后还获取属于该模型的旧孩子。我将尝试在此处添加一个示例:

然后在使用类似的东西获取旧模型之后versions[1]

这甚至可能吗?

上面的例子被简化了很多。实际上,我需要获取具有嵌套子对象的旧父对象,就像旧父对象存在时一样。所以不仅仅是计数,而是整个对象。

0 投票
0 回答
1279 浏览

python - 返回 django 模型中刚刚更改的字段

在我的应用程序中,我使用 django-reversion 和 django-reversion-compare 应用程序扩展来控制对象版本。

当我在管理员之外更新对象时,我set_comment()只想更新字段。如何访问更新字段列表并将它们设置为该回复的评论?

我明白当我比较对象版本时,我会看到哪些字段已更改,但我希望在表的更改历史记录中预览。

我试图这样做django-dirtyfields,但它返回所有字段。

添加对象:

模型:

0 投票
0 回答
278 浏览

python - 如何在具有关系(django)的模型中实现阴影编辑(或修订)?

虽然这是 django+postgresql,但答案可能是通用 sql 或来自“傻瓜数据库”一书。

我们有一个包含多个相互关联的模型(一对一、一对多和多对多字段)的数据库。我们希望允许用户对数据库进行影子编辑,并且仅在他对更改感到满意时才发布。

对于单个模型,我可以使用django-reversions之类的东西,并且可以以一种 hacky 的方式手动处理这些关系。但是,这会产生几个副作用:

  • 不受 django 控制的模型可能会更改,这将立即更新数据(无卷影副本)
  • 由于正在存储外部关系,如果对它们进行大量编辑,事情会变得很奇怪。
  • 大量工作“捕获”CRUD 操作并将它们路由到已发布或草稿条目(如果特定用户正在编辑)
  • 发布时需要修复关系上的所有 pks(更多 hack-titude)

我真正想要的是可以做到这一点的东西:

  • 允许通过多次 REST CRUD 调用一次编辑多个相关表,并且仅在“发布”后更新
  • 允许回滚到以前的版本(版本控制)

有任何想法吗?