问题标签 [django-simple-history]

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 回答
473 浏览

django - 如何在 django-simple-history 的 history_list_display 中引用外键?

我已将 HistoricalRecords 添加到 django 中的模型中。

我能够使用history_list_display属性在管理面板的历史记录页面中显示列。

在这些列中,我有可以employeehistory_list_display属性元组中显示的员工。但是当我尝试对employee__person__person_name其他表进行 ForeignKey 引用时,它显示的是None.

如何在 django admin 的历史记录页面中显示 ForeignKey 参考值?

0 投票
2 回答
167 浏览

django - 通过覆盖 save 规避 django-simple-history 的 F 表达式问题

Django-simple-history 在每次保存目标模型时插入新记录。在文档中描述了 F 表达式的问题。我尝试使用覆盖的保存方法来规避这个问题。

但似乎,这行不通。post_save调用后直接调用base model的信号super().save()吗?如果是这样,有没有办法解决这个问题,让 F 表达式保持在目标模型更新中?

更新:保存的实例具有使用 F 表达式定义的属性之一,因此在其他一些模块中调用此代码:

这会在 django-simple-history 的信号中引发错误post_save,当它尝试插入instance历史表的扩展副本时。我试图在覆盖save方法中刷新实例以摆脱 F 表达式,some_attribute以便加载实际值。从回溯看来,在调用post_save之后super().save(),刷新之前就调用了。它是 Django post_save 覆盖保存的方式吗?如果是这样,有没有办法不更改更新代码(用 F 表达式保留更新)并解决模型保存中的历史插入?

0 投票
0 回答
757 浏览

python - Django Simple History - 跟踪 M2M 字段更改(使用“通过”)

我正在使用 django-simple-history 跟踪对我的字段的更改,从我所见,似乎 django-simple-history 不跟踪对 M2M 字段的更改。我尝试为 M2M 字段引入中间模型,然后在该中间模型中附加一个 HistoricalRecords() 字段,但似乎没有用,除非我错误地使用了 django-simple-history。似乎每当我在 M2M 字段中添加新关系(使用“通过”)时,都会在中间模型中创建一个新实例,将外键关系引用到具有 M2M 关系的两个模型,并且每当删除一个关系时,对应的中间模型中的实例将被删除。如果是这样的话,如何通过中间模型跟踪 M2M 字段的变化?因为只要实例作为关系被删除,它就会被删除,这将导致跟踪不存在,因为该实例不再存在。我是 django-simple-history 的新手,所以如果我错过或误解了什么,请指导我,谢谢大家!

这是我的代码:

模型.py

序列化程序.py

视图.py

我在这里做错什么了吗?我不太清楚我应该如何处理中间模型的创建和更新与基础模型(SalesProject)的关系,所以我在SalesProject的ModelSerializer的创建和更新方法中手动处理,这样当我创建并更新一个 SalesProject 实例,我可以在 1 次调用中更新和创建中间模型 (ProjectCustomer) 中的 M2M 关系。我不确定我所做的方式是否正确,尤其是更新方法,因为我正在清除所有现有关系以添加新关系,所以也许这就是问题所在,但我不确定正确的方法是什么处理这是,所以请指导我!

感谢所有帮助,谢谢!

0 投票
1 回答
912 浏览

django - Django - 在一个模板中显示多个视图

我目前正在开发一个 Django 项目,我想在其中构建一种仪表板,它实际上可能有两个引导列(将来可能是 3-4 个)。在每一列中,将显示来自数据库的内容。目前,这意味着我想显示两个表格。一个显示模型的所有条目和一个显示最后历史条目的表(django-simple-history)。这些表是使用 django-table2 呈现的。

首先,我尝试使用 MultiTableMixin 解决问题。不幸的是没有成功。我目前的想法是在逻辑上将内容分成两个视图,然后为每一列添加一个视图。我试图让视图显示在 iframe 中。此外,这并不像想象的那么好。

我的问题有哪些选择。还是我想得太复杂而迷路了?

0 投票
1 回答
302 浏览

python - 在 django-tables2 表中呈现 django-simple-history 查询

我尝试django-simple-historydjango-tables2表中呈现查询集。目前我将原始查询集传递给上下文中的模板。此外,我想将 Queryset 传递给Table对象以使用表的功能,例如 linkyfy 列或排除列。为此,我必须在表元中指定一个模型。这里的问题是,历史模型是自动生成的。

实际代码:

有没有办法引用自动生成的HistoryModel

0 投票
0 回答
376 浏览

django - AttributeError:“NoneType”对象没有属性“history_change_reason”

我正在使用 django-simple-history 保存 django 模型中每次更改的更改历史记录。

那是我尝试过的:

我得到了以下错误。 AttributeError: 'NoneType' object has no attribute 'history_change_reason'

0 投票
1 回答
153 浏览

django - 有没有办法断开简单历史中的 post_delete 信号?

我需要为查询集中删除的每个对象批量创建历史记录。我已经正确编码了,我认为如下。

但问题是我需要断开 post_delete 信号,以便在我一次完成所有操作之前不会由简单的历史记录创建历史记录。

我已经尝试过了,但它不起作用。

whereCustomer只是我用来测试此实用程序功能的一个类。

有人可以建议吗?提前致谢。

在他们的 github 页面上也问了这个问题 - https://github.com/jazzband/django-simple-history/issues/717

0 投票
1 回答
263 浏览

django - django简单的历史字段索引

如何告诉 DSH 索引特定字段?我对历史模型所做的一些查询花费了太多时间

在此处输入图像描述

我有基础抽象模型,我所有的模型都继承自该模型。历史字段也在这个基本模型中定义:

我还在这个基本模型中添加了索引

如果 Django Simple History 可以检查哪些字段被索引并在历史模型中创建相同的索引,那就太好了

也许有一种方法可以明确地告诉 django 简单历史必须另外索引哪个字段?

0 投票
0 回答
66 浏览

python - 如何解决此错误“未知列'history_change_reason'”?

你好 stackoverflow 社区,

当我尝试写入我的数据库时,我遇到了这个错误。我似乎无法history_change_reason通过 mysqlWorkbench 在我的数据库中找到列。以前有其他人处理过这个吗?

0 投票
1 回答
344 浏览

django - django 简单历史不会显示在管理员中

我已按照Django-simple-history文档从管理页面显示历史记录,但不知何故,管理页面似乎没有显示历史记录。我正在使用 Django 版本 3.1.2

这是我的管理员