【发布时间】:2014-10-02 10:37:20
【问题描述】:
我正在开发一个项目,该项目使用 django-reversion 来跟踪更改并提供恢复到早期状态的能力,并使用 django-mptt 来处理一些树形模型。然而,删除和恢复功能有一些奇怪的行为。我正在使用如下所示的演示数据:
Big Company
Sub Company 1
Sub Company 2
Tiny Company 1
Tiny Company 2
我已经操纵 django-reversion 以便删除一个节点 也 将其所有子节点保存到修订版 - 因此,删除 Big Company 会删除整个树,然后将其还原(或实际上,任何子节点)也会恢复整个树。到目前为止,一切顺利。
但是,当我尝试删除/还原子节点时,事情开始变得奇怪。例如,删除“子公司 1”会导致“子公司 2”及其后代停止在模板中呈现(尽管奇怪的是,这种行为有些不一致)。或者,我是否应该在删除后使用 django-reversion 恢复“子公司 2”,“小公司”都不会在模板中呈现(尽管快速进入 shell 并调用对象表明它们仍在数据库中,并且他们仍然有“子公司 2”作为他们的母公司。
所有这些问题都可以通过调用 Company.objects.rebuild() 来解决,这会将树恢复到正确的表示形式——但是该项目的生产就绪版本可能在数据库中有 很多 数据,并且由于这是一项全桌活动,因此成本高得令人望而却步。关于我可以做些什么来解决这个问题的任何想法?
【问题讨论】:
标签: django django-mptt django-reversion