问题标签 [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.
django - django-reversion 是否需要我重新定义所有模型 pre_save 和 post_save 信号?
我最近在我的项目中添加了django-reversion以保留模型更改的历史记录。现在,每当我在系统中保存模型时,我都会在日志中收到以下警告:
.../site-packages/reversion/models.py:218:UserWarning:将不再为 django-reversion 1.8 中的 Revision 和 Version 模型发送 pre_save 和 post_save 信号。请改用 pre_revision_commit 和 post_revision_commit 信号。
但是,我没有在 Revision 和 Version 模型本身上使用 pre_save 和 post_save 信号,或者任何扩展这些信号的东西……这个警告是说我需要在我的项目中使用的任何模型上更改 pre_save 和 post_save 信号版本控制??
django - 导入 django reversion 会报错
我需要在 django admin 中为我的模型添加版本控制,因此我从这里安装了 django-reversion。我的服务器没有互联网连接,所以我无法使用 pip。我不得不手动下载 zip从github文件,上传到我的服务器,提取内容并运行python setup.py install
以安装reversion。
但是,当我尝试导入它时,出现以下错误:
根据 github 页面,当前版本为 1.8.0,应该与 django 1.6 兼容。可能是什么问题呢 ?
django - 如何为自定义类型定义序列化,用作自定义 Django 字段的值
我已经创建了自己的自定义 models.TextField 子类,它将类作为其值并将这些值编码为数据库中给定类的 CODE 属性。到目前为止,所有这些都有效,但我想使用 Django-reversion,它会在每次进行更改时序列化模型并将模型保存在版本表中。我将其用于我的应用程序的审核目的。
Reversion 无法序列化我分配给自定义字段的值,声称它们不可序列化。如何为我的对象定义序列化方法?我不能只定义一个 DjangoJSONEncoder 子类(Django 用于默认序列化的类),因为我无法控制调用其序列化方法的代码,因为它是 Django-reversion 的一部分。这是堆栈跟踪,最终在 Python 的默认 json 编码器中失败:
在 LazyEncoder 的定义和紧接在它前面的文本中,对这里的答案有一个模糊的建议。
django - 数据迁移期间模型不可用
我在我的应用程序中添加了一个模型,它通过一对一的字段Target
标记一个Revision
对象(来自)。django-reversion
标签取决于版本集中的对象,如果这些对象中的任何一个需要标签,则应为整个修订设置标签。我正在尝试使用django-south
数据迁移来遍历Revision
数据库中的所有对象,检查关联中的每个对象version_set
,并在必要时设置标签。
给出一个错误:
如何在不同应用程序的数据迁移期间访问对象的version_set
?Revision
编辑感谢丹尼尔,我走得更远了。在以下代码中,我尝试通过 Migration's own 访问所有模型orm
:
instance = model.objects.get(id=version.object_id_int)
除了例外,这都失败了DoesNotExist: ModelB matching query does not exist
。
python - django reversion - 将相关字段恢复为相同版本
我有两个模型:
我在 django-reversion 中注册了这些模型:
因此,当我获得包含旧信息的旧版 Plan 时,我尝试获取此旧版 Plan 的相关对象,如下所示:
但我得到了这些相关对象的最新版本。那么,我怎样才能获得旧版本的销售呢?
django - 让 django-mptt 与 django-reversion 一起玩得很好
我正在开发一个项目,该项目使用 django-reversion 来跟踪更改并提供恢复到早期状态的能力,并使用 django-mptt 来处理一些树形模型。然而,删除和恢复功能有一些奇怪的行为。我正在使用如下所示的演示数据:
我已经操纵了 django-reversion 以便删除一个节点也会将其所有子节点保存到修订版中——因此,删除 Big Company 会删除整个树,然后还原它(或者实际上是任何子节点)也会还原整棵树。到目前为止,一切都很好。
然而,当我尝试删除/恢复子节点时,事情开始变得奇怪。例如,删除“子公司 1”会导致“子公司 2”及其后代停止在模板中呈现(尽管奇怪的是,这种行为有些不一致)。或者,我是否应该在删除后使用 django-reversion 恢复“子公司 2”,“小公司”都不会在模板中呈现(尽管快速进入shell
并调用对象表明它们仍在数据库中,并且他们仍然将“子公司 2”作为其母公司。
所有这些问题都可以通过调用来解决Company.objects.rebuild()
,这会将树恢复到正确的表示形式——但是这个项目的生产就绪版本可能在数据库中有很多数据,而且由于这是一个全表活动,所以它会令人望而却步昂贵的。关于我可以做些什么来解决这个问题的任何想法?
python - Django 管理员同时使用 Django Reversion 和 Django-Import-Export
我正在尝试为同一模型启用 Django Reversion 和 Django-Import-Export ...不确定我的逻辑是否正确,或者我是否应该使用多个 admin.py 文件等
我尝试了以下方法,但这仅允许 Django Reversion 工作,如果我在 Import Export Works 周围切换它们。如果我可以同时启用两者,那就太棒了。
我已经查看了这两个项目的 readthedocs,但仍然迷路了。
http://django-reversion.readthedocs.org/en/latest/admin.html#admin https://django-import-export.readthedocs.org/en/latest/getting_started.html
干杯 xc0m
python - 在测试用例中使用 django-reversion 时如何为测试对象创建初始修订
我在玩 django-revisions 时正在创建一些初始测试。我希望能够测试我的一些 api 并查看代码是否正确保存了修订。但是,我什至无法进行基本测试来保存已删除的版本。
使用以下命令检查已删除 QuerySet 的长度时失败:
我的假设是我需要创建模型的初始修订版(相当于./manage.py createinitialrevisions
)。如果这是问题,我如何在我的测试中创建初始修订?如果这不是问题,我还能尝试什么?
django - 不同http请求之间的Django事务管理
我一直在研究 DJANGO 后端,主要用例是能够存储一组给定的图片及其相关标签。
当前的设计预见到专用的 REST-ful API 用于创建新集合、将图片添加到给定集合并将标签关联到给定集合:这会导致不同的客户端调用。
例如 :
开始“创建新集”事务
- 创建一个新集合并接收集合 ID
- 上传套装的第一张图片
- 上传集合的第二张图片(依此类推,依图片总数而定...)
- 添加与这个新添加的集合相关的标签
结束交易
我如何提交/回滚这样一个事务,知道它是在不同的 HTTP 请求中分割的?
我这里有设计问题吗?我应该支持单一的累积 HTTP 请求方法吗?
请注意,此类后端将与可能遭受暂时信号丢失的移动设备一起使用。
欢迎任何建议。
更新:
使用 django-revisions 等模型版本控制包来解决问题是否方便?
python - Django 回归
我想撤消上一次 POST/PUt/DELETE 或数据库中的任何类型的事务。我阅读了Django-reversion并尝试实现它。但没有运气。这是我的代码。请确认我做错了什么!!!
要反转的模型:-
意见
我在做什么错??