跳转到主要内容

存储模型历史记录并从管理站点查看/撤销更改。

项目描述

Jazzband Build Status Documentation Status Test Coverage Maintainability Code Style Downloads

django-simple-history 在每次创建/更新/删除时存储Django模型状态。

此应用程序支持以下Django和Python的组合

Django

Python

4.2

3.8, 3.9, 3.10, 3.11, 3.12, 3.13-dev

5.0

3.10, 3.11, 3.12, 3.13-dev

main

3.10, 3.11, 3.12, 3.13-dev

获取帮助

文档可在https://django-simple-history.readthedocs.io/en/stable/找到

欢迎提交拉取请求。阅读CONTRIBUTING文件以获取提交拉取请求的提示。

许可证

本项目采用BSD 3-Clause许可证


变更日志

3.7.0 (2024-05-29)

  • 停止支持Django 3.2,该版本于2024-04-01达到生命周期结束(gh-1344)

  • 移除了3.5.0中添加的临时要求asgiref>=3.6,现在最低要求的Django版本是4.2(gh-1344)

  • 将软件包构建从使用已弃用的setup.py迁移到使用pyproject.toml(使用Hatchling作为构建后端);因此已删除setup.py(gh-1348)

  • django>=4.2添加为安装依赖项,以反映我们CI中测试的最低版本(gh-1349)

3.6.0 (2024-05-26)

  • 支持自定义历史记录ManagerQuerySet类(gh-1280)

  • 将(以前内部使用的)管理模板simple_history/_object_history_list.html重命名为simple_history/object_history_list.html,并添加了字段SimpleHistoryAdmin.object_history_list_template以覆盖它(gh-1128)

  • 弃用了未记录的模板标签simple_history_admin_list.display_list();它将在版本3.8中删除(gh-1128)

  • 添加了SimpleHistoryAdmin.get_history_queryset()以覆盖用于列出历史记录的哪个QuerySet(gh-1128)

  • 添加了SimpleHistoryAdmin.get_history_list_display(),它默认返回history_list_display,并将后者变成一个实际字段(gh-1128)

  • ModelDeltaModelChange(在simple_history.models中)现在是不可变的数据类;它们的签名保持不变(gh-1128)

  • ModelDeltachangeschanged_fields现在按字段名称字母顺序排序。此外,如果ModelChange是针对M2M字段,则其oldnew列表按相关对象排序。这应有助于防止测试不稳定。(gh-1128)

  • diff_against()有一个新的关键字参数,foreign_keys_are_objs;请参阅“历史差异”部分中的文档中的用法(gh-1128)

  • 向《SimpleHistoryAdmin》的对象历史表中添加了“更改”列,列出了对象每个历史记录之间的更改;有关覆盖模板上下文的信息,请参阅“自定义历史管理模板”部分的文档(gh-1128)

  • 修复了设置 SIMPLE_HISTORY_ENABLED = False 不能阻止创建M2M历史记录的问题(gh-1328)

  • 对于跟踪历史记录的M2M字段,使用 add()set() 添加M2M对象(对象数量与数据库查询数量成线性关系);现已修复为固定数量的查询(gh-1333)

3.5.0 (2024-02-19)

  • 修复了为具有 to="self" 的多对多字段创建历史记录时的 FieldError(gh-1218)

  • 允许 HistoricalRecords.m2m_fields 以字符串形式存在(gh-1243)

  • 修复了在非常特定的条件下 HistoryRequestMiddleware 删除不存在的 HistoricalRecords.context.request 的问题(gh-1256)

  • bulk_create_with_history()bulk_update_with_history() 添加了 custom_historical_attrs,用于在自定义历史模型上设置额外字段(gh-1248)

  • 现在允许将空列表作为 bulk_update_with_history()fields 参数传递;仍然会创建历史记录(gh-1248)

  • 在最低要求的Django版本低于4.2时,添加了对 asgiref>=3.6 的临时要求(gh-1261)

  • clean-duplicate_history 命令进行了小的性能优化(gh-1015)

  • 支持简体中文翻译(gh-1281)

  • 添加了对Django 5.0的支持(gh-1283)

  • 添加了对Python 3.13的支持(gh-1289)

3.4.0 (2023-08-18)

  • 修复了文档中的错别字

  • 当在 settings 中将 SIMPLE_HISTORY_ENFORCE_HISTORY_MODEL_PERMISSIONS 设置为 True 时,显式评估 history 模型权限(gh-1017)。

  • 修复了 SimpleHistoryAdmin 无法正确与自定义用户模型集成的问题(gh-1177)

  • 支持印尼语翻译(gh-1198)

  • 支持乌尔都语翻译(gh-1199)

  • 支持挪威语 bokmål 翻译(gh-1210)

  • 停止支持Python 3.7,该版本已于2023-06-27达到生命终结(gh-1202)

  • 停止支持Django 4.0,该版本已于2023-04-01达到生命终结(gh-1202)

  • 添加了对Django 4.2的支持(gh-1202)

  • 使 bulk_update_with_history() 返回更新模型行数(gh-1206)

  • 修复了在特定情况下 HistoryRequestMiddleware 无法清理自身(即删除 HistoricalRecords.context.request)的问题(gh-1188)

  • 使 HistoryRequestMiddleware 具有异步功能(gh-1209)

  • 修复了设置 table_name 时出现 inherit=True 的错误(gh-1195)

3.3.0 (2023-03-08)

  • 使模型继承能够使用新的 m2m_fields(gh-1042)

  • 添加了两个信号: pre_create_historical_m2m_recordspost_create_historical_m2m_records(gh-1042)

  • 向历史模型添加了 tracked_fields 属性(gh-1038)

  • 修复了在具有 excluded_fields 的模型上运行 clean_duplicate_history 时出现的 KeyError(gh-1038)

  • 添加了对Python 3.11的支持(gh-1053)

  • 添加了阿拉伯语翻译(gh-1056)

  • 修复了“跟踪多对多关系”下的代码示例(gh-1069)

  • clean_duplicate_history 管理命令添加了 --base-manager 选项(gh-1115)

3.2.0 (2022-09-28)

  • 修复了文档中的错别字

  • bulk_create_with_history 实用程序中删除了 n+1 查询(gh-975)

  • populate_history 命令中使用 exists 查询代替 count(gh-982)

  • 添加了对多对多字段的初步支持(gh-399)

  • 添加了对 Django 4.1 的支持(gh-1021)

3.1.1 (2022-04-23)

变更列表

  • 修复 pyproject.toml 中的 py36 引用(gh-960)

  • 修复 local setup.py 安装版本问题(gh-960)

  • 移除 py2 通用的 wheel cfg - 现在只需要 py3(gh-960)

3.1.0 (2022-04-09)

重大变更

  • 停止支持 Django 2.2(gh-968)

  • 停止支持 Django 3.1(gh-952)

  • 停止支持 Python 3.6,该版本已于 2021-12-23 达到生命终结(gh-946)

升级影响

  • 升级后运行 makemigrations 以实现索引更改的优势。

变更列表

  • 添加基于查询集的 as_of 过滤(gh-397)

  • history_date 列上添加索引;通过设置 SIMPLE_HISTORY_DATE_INDEX 退出(gh-565)

  • RecordModels 现在支持 no_db_index 设置,以在历史模型中删除索引,默认保持不变(gh-720)

  • 支持 history.diff_against 中的 included_fields(gh-776)

  • 通过减少查询次数到 0 来改进 history.diff_against 的性能(gh-776)

  • 修复使用 excluded_fieldsprev_recordnext_record 的性能问题(gh-791)

  • 修复在 pk 中使用 update_change_reason(gh-806)

  • 修复了与 OrderingFilter 一起使用时 djangorestframework 序列化器崩溃的 bug(gh-821)

  • 修复 make format,使其通过使用 tox 运作(gh-859)

  • 修复了 latest() 对于相同的 history_date 记录不是幂等的 bug(gh-861)

  • 添加 excluded_field_kwargs 以支持具有附加参数的 OneToOneField,这些参数在 ForeignKey 上不存在。(gh-870)

  • 添加了捷克语翻译(gh-885)

  • 添加了在单元测试失败时断入调试器的功能(gh-890)

  • 添加了预提交以获得更好的提交质量(gh-896)

  • 更新了俄语翻译(gh-897)

  • 添加了对 Django 4.0 的支持(gh-898)

  • 将 Python 3.10 添加到测试矩阵中(gh-899)

  • 修复了 history.diff_against 与不可编辑字段相关的 bug(gh-923)

  • 添加了 HistoricForeignKey(gh-940)

  • 支持更改原因公式功能。更改原因公式可以在继承 HistoricalRecords 后覆盖 get_change_reason_for_object 方法后定义(gh-962)

3.0.0 (2021-04-16)

重大变更

  • 移除了对 Django 3.0 的支持

  • 移除了 changeReason,转而使用 _change_reason(见 2.10.0)(gh-652)

变更列表

  • 移除了对 Django 2.2 之前版本的支持(gh-652)

  • 从 TravisCI 迁移到 Github Actions(gh-739)

  • 添加 Python 3.9 支持(gh-745)

  • bulk_create_with_history 中支持 ignore_conflicts(gh-733)

  • 当可用时使用 asgiref 而不是 thread locals

  • 使用 isort 对导入进行排序(gh-751)

  • 通过在数据库中计算来提高 history.as_of 查询集的速度(gh-758)

  • blackisort 的 Python 版本提高到 3.6(gh-817)

  • 移除 Django 3.0 支持(gh-817)

  • 添加 Django 3.2 支持(gh-817)

  • 改进了法语翻译(gh-811)

  • 移除对 changeReason 的支持(gh-819)

2.12.0 (2020-10-14)

  • bulk_create_with_historybulk_update_with_history 添加默认日期(gh-687)

  • 在使用 bulk_create_with_history 时排除 ManyToManyFields(gh-699)

  • clean_duplicate_history 命令添加 --excluded_fields 参数(gh-674)

  • 在获取排除字段时排除 ManyToManyFields(gh-707)

  • bulk_create_with_historybulk_update_with_history 使用默认模型管理器而不是 objects(gh-703)

  • 将可选的 manager 参数添加到 bulk_update_with_history 中,以替代默认的管理器(gh-703)

  • 支持 Django 3.1(gh-713)

  • 修复了 clean_old_history 命令的 –days 参数的 bug(gh-722)

* 注意:这将是 3.0.0 版本前的最后一个小版本。

2.11.0 (2020-06-20)

  • 添加了 clean_old_history 管理命令(gh-675)

  • user_db_constraint 参数添加到历史记录中,以避免在删除时出现循环引用(gh-676)

  • 利用 HistoricalRecords 中的 get_user 来在批量更新和批量创建时设置备用用户(gh-677)

2.10.0 (2020-04-27)

  • 添加了 bulk_update_with_history 工具函数(gh-650)

  • 将默认用户和默认变更原因添加到 bulk_create_with_historybulk_update_with_history(gh-653)

  • 添加了法语翻译(gh-654)

  • 开始使用 _change_reason 而不是 changeReason 来向历史对象添加变更原因。 changeReason 已弃用,将在版本 3.0.0 中删除(gh-655)

2.9.0 (2020-04-23)

  • clean_duplicate_history 中添加了简单的过滤功能,如果提供了分钟参数(gh-606)

  • 添加设置以将 FileField 转换为 CharField 而不是 TextField(gh-625)

  • 添加了有关 BitBucket Pipelines 的说明(gh-627)

  • 使用 django_apps.get_modelSimpleHistoryAdmin 中导入模型 ContentType,以避免可能出现的 AppRegistryNotReady 异常(gh-630)

  • 修复了当用户指定 excluded_fields 时 utils.update_change_reason 的 bug(gh-637)

  • 更改了从 timezone 导入 now 的方式(现在导入 timezone 模块)(gh-643)

  • settings.SIMPLE_HISTORY_REVERT_DISABLED 如果为 True,则从所有历史模型的记录表单中删除还原按钮(gh-632)

2.8.0 (2019-12-02)

  • 修复了支持 bulk_create_with_historyHistoryRecords 具有属性 relation_name 的 bug(gh-591)

  • 为不同于 PostgreSQL 的数据库添加了对 bulk_create_with_history 的支持(gh-577)

  • 修复了尝试获取已删除对象的实例时出现的 DoesNotExist 错误(gh-571)

  • 修复了当使用 inherit=Truemodel_to_dict 检测父模型更改的问题(对直接使用先前版本的用户不兼容)(gh-576)

  • clean_duplicate_history 使用迭代器(gh-604)

  • 添加了对 Python 3.8 和 Django 3.0 的支持(gh-610)

2.7.3 (2019-07-15)

  • 修复了 BigAutoField 未镜像为 BigInt 的 bug(gh-556)

  • 修复了与 excluded_fields 相关的 most_recent() bug(gh-561)

  • 添加了对官方 Django 2.2 的支持(gh-555)

2.7.2 (2019-04-17)

  • 修复了 six 的 ModuleNotFound 问题(gh-553)

2.7.1 (2019-04-16)

  • 添加了创建与原始模型相关联的可能性(gh-536)

  • 修复了与 2.7.0 的路由向后兼容性问题(gh-539,gh-547)

  • 修复了硬编码的历史管理器(gh-542)

  • 将弃用的 django.utils.six 替换为 six(gh-526)

  • 允许 custom_model_name 参数是一个可调用对象(gh-489)

2.7.0 (2019-01-16)

  • * 添加了对使用链式管理方法和 save/delete 关键字参数的 using 的支持(gh-507)

  • 添加了管理命令 clean_duplicate_history 以删除重复的历史记录(gh-483)

  • 更新了 most_recent 以支持 excluded_fields(gh-477)

  • 修复了阻止自我参照外键使用 'self' 的 bug(gh-513)

  • 添加了跟踪具有明确的自定义 history_user_id_field 的自定义用户的能力(gh-511)

  • 不要解析历史对象的关系(gh-479)

  • 文档重组(gh-510)

* 注意:此更改与使用路由器将历史表写入与基础表不同的数据库的用户不兼容。此问题已在2.7.1中修复。

2.6.0 (2018-12-12)

  • app 参数添加到 HistoricalRecords 构造函数中(gh-486)

  • custom_model_name 参数添加到 HistoricalRecords 构造函数中(gh-451)

  • 当使用自定义 site_header 时修复历史页面上的标题(gh-448)

  • 修改 pre_create_historical_record 以传递 history_instance 以便于自定义(gh-421)

  • 如果 HistoricalRecords(inherit=False) 在抽象模型中,则引发警告(gh-341)

  • 确保字段的自定义参数包含在历史模型字段中(gh-431)

  • 添加德语翻译(gh-484)

  • extra_context 参数添加到 history_form_view(gh-467)

  • 修复了防止 next_recordprev_record 与自定义管理器名称一起工作的错误(gh-501)

2.5.1 (2018-10-19)

  • bulk_history_create 中将每个实例的 history_type 设置为 '+'(gh-449)

  • bulk_history_create 中为每个实例添加对 history_change_reason 的支持(gh-449)

  • Change reason 显示名称下添加 history_change_reason(gh-458)

  • 修复了使用自定义用户模型时导致失败的错误(gh-459)

2.5.0 (2018-10-18)

  • 添加了在删除主记录时级联删除历史记录的能力(gh-440)

  • 添加了俄语本地化(gh-441)

2.4.0 (2018-09-20)

  • 添加 pre 和 post create_historical_record 信号(gh-426)

  • 在转换 AutoFields 时移除对 django_mongodb_engine 的支持(gh-432)

  • 添加对 Django 2.1 的支持(gh-418)

2.3.0 (2018-07-19)

  • 添加了比较 HistoricalRecords 的能力(gh-244)

2.2.0 (2018-07-02)

  • 添加了为跟踪指定替代 user_model 的能力(gh-371)

  • 添加了允许具有历史记录保存的 bulk_create 的 util 函数 bulk_create_with_history(gh-412)

2.1.1 (2018-06-15)

  • 修复了运行 populate_history 管理命令时的内存不足异常(gh-408)

  • 修复了 populate_history 中指定 excluded_fields 时出现的 TypeError(gh-410)

2.1.0 (2018-06-04)

  • 添加了指定自定义 history_reason 字段的能力(gh-379)

  • 添加了指定自定义 history_id 字段的能力(gh-368)

  • 添加 HistoricalRecord 实例属性 prev_recordnext_record(gh-365)

  • 可以在对象历史更改列表模板上设置管理方法作为属性(gh-390)

  • 修复了与旧式中间件兼容性的问题(gh-369)

2.0 (2018-04-05)

  • 添加了 Django 2.0 支持(gh-330)

  • 删除了对 Django≤1.10 的支持(gh-356)

  • 修复了 history_view 忽略用户权限的错误(gh-361)

  • 修复了 HistoryRequestMiddleware,它对于 Django>1.9 没有工作(gh-364)

1.9.1 (2018-03-30)

  • history_view 中使用 get_queryset 而不是 model.objects(gh-303)

  • 将 models.py 中的 ugettext 调用更改为 ugettext_lazy

  • 解决了模型引用自己的问题(gh-278)

  • 修复了跟踪继承模型(抽象类)的问题(gh-269)

  • 修复了 django-admin 中的历史详细视图在抽象模型上的问题(gh-308)

  • 删除了对 Django≤1.6 和 Python 3.3 的支持(gh-292)

1.9.0 (2017-06-11)

  • 向 populate_history 管理命令添加 --batchsize 选项。(gh-231)

  • 添加了在管理历史列表视图中显示特定属性的能力。(gh-256)

  • 添加巴西葡萄牙语翻译文件。(gh-279)

  • 修复地区文件打包问题。(gh-280)

  • 添加指定历史更改原因的功能。(gh-275)

  • 测试Django 1.11和Python 3.6。(gh-276)

  • 添加excluded_fields选项以排除历史记录中的字段。(gh-274)

1.8.2 (2017-01-19)

  • 添加波兰语地区。

  • 添加对Django 1.10的支持。

1.8.1 (2016-03-19)

  • 在处理响应时清除threadlocal请求对象,以防止测试交互。(gh-213)

1.8.0 (2016-02-02)

  • 可以通过传递inherit=True使历史跟踪可继承。(gh-63)

1.7.0 (2015-12-02)

  • 在删除对象实例时,在管理界面中添加列出历史记录的功能。(gh-72)

  • 添加通过管理界面更改历史记录的功能。(启用SIMPLE_HISTORY_EDIT设置。)

  • 添加对Django 1.9的支持。

  • 支持自定义表名。(gh-196)

1.6.3 (2015-07-30)

  • 尊重to_fielddb_column参数(gh-182)

1.6.2 (2015-07-04)

  • 使用应用程序加载系统,并修复Django 1.8上的弃用警告(gh-172)

  • 更新Landscape配置

1.6.1 (2015-04-21)

  • 修复历史模型中OneToOneField的转换(gh-166)

  • 禁用从相关模型到历史模型的级联删除

  • 修复恢复缺少一对一关系的已删除历史实例(gh-162)

1.6.0 (2015-04-16)

  • 添加对Django 1.8+的支持

  • 弃用CustomForeignKeyField的使用(将被删除)

  • 删除历史模型对auth.User的默认反向访问器(gh-121)

1.5.4 (2015-01-03)

  • 修复当模型具有具有primary_key=TrueForeignKey时的错误

  • 当用户被删除时,不要删除历史元素。

  • 添加对latest的支持

  • 允许设置更改原因。[使用选项changeReason]

1.5.3 (2014-11-18)

  • 修复使用order_with_respsect_to时的迁移(gh-140)

  • 修复使用south的迁移

  • 允许在register()中覆盖历史访问器类

1.5.2 (2014-10-15)

  • 迁移的额外修复(gh-128)

1.5.1 (2014-10-13)

  • 删除与非默认管理站点的一些不兼容性(gh-92)

  • 修复在匿名请求期间由HistoryRequestMiddleware引起的错误(gh-115修复gh-114)

  • 添加对用户上冲突的关联历史访问器的解决方案(gh-121)

  • 添加对MongoDB AutoField的支持(gh-125)

  • 修复1.7迁移中的CustomForeignKeyField错误(gh-126修复gh-124)

1.5.0 (2014-08-17)

  • as_of方法扩展到模型以及实例。

  • 允许通过中间件设置历史对象的history_user

  • 修复使用仅模型名称指定外键时发生的错误。

  • 停止支持Django 1.3

1.4.0 (2014-06-29)

  • 修复模型具有指向一对一字段的ForeignKey时发生的错误。

  • 修复当模型verbose_name使用unicode时出现的错误(gh-76)

  • 允许非整数外键

  • 允许外键引用模型名称作为字符串

  • 添加指定自定义history_date的能力

  • 注意,应将simple_history添加到INSTALLED_APPS中(gh-94修复gh-69)

  • 正确处理管理URL中的主键转义(gh-96修复gh-81)

  • 添加对新应用程序加载的支持(Django 1.7+)

  • 允许指定历史模型的自定义基类(gh-98)

1.3.0 (2013-05-17)

  • 修复在嵌套模型包中使用django-simple-history时的错误

  • 允许使用django-admin-bootstrap正确格式化历史表

  • 不允许在同一个模型上两次调用simple_history.register

  • 添加Python 3支持

  • 添加对自定义用户模型的支持(Django 1.5+)

1.2.3 (2013-04-22)

  • 修复打包错误:将管理模板文件添加到PyPI包中

1.2.1 (2013-04-22)

  • 添加测试

  • 在管理界面中添加历史视图/还原功能

  • 各种修复和改进

2010年10月22日

  • 合并了Klaas van Schelven的setup.py - 感谢!

2010年2月21日

  • 创建初始项目,并进行了更改以支持ForeignKey关系。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django_simple_history-3.7.0.tar.gz (230.3 kB 查看哈希值)

上传时间

构建分发

django_simple_history-3.7.0-py3-none-any.whl (139.4 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页