这个bug很快就变得奇怪了。在一个相当复杂的 django 项目中,我注意到不可能恢复使用 django-reversion 注册的任何内容。显示的更改历史记录是准确的(更改内容的日期和评论与现实相符),但访问对象的 /history/rev_number始终显示预先填充有最新版本的表单。
我确认实际存储在数据库中的修订版很好,在 serialized_data 字段中包含正确的数据,并且不相同。只有在渲染历史/修订视图之后,生成的 HTML 才会包含最新的值。
然后我在这个项目中创建了一个新模型,进行了一些更改,尝试恢复它们 - 出现了同样的错误。这个新模型没有管理员自定义。此外,我删除了我的自定义模板目录,以确保没有任何非标准影响渲染。尽管如此,错误仍然存在。
最后,我创建了一个新的 django 项目,其中只有一个注册模型,做了一些更改并尝试恢复 -错误仍然出现。这是一个从头开始的项目,与主要项目没有任何共同之处。
无奈之下,我用全新的 Python 安装删除并重新构建了一个 virtualenv,并安装了主项目的所有需求,并将主项目的所有依赖项添加到新项目的 INSTALLED_APPS 中。新项目的错误消失了。
- 使用新的virtualenv,新项目正常工作
- 使用旧的 virtualenv,两个项目都显示出错误的行为
- 使用新的 virtualenv,主项目仍然显示错误的行为
看起来项目配置中的某些内容和 virtualenv 中的某些内容都会影响这种情况,此时我无法弄清楚这怎么可能。有什么想法我在看什么以及如何更好地调试情况?