django-simple-history完整指南:从基础安装到高级自定义

张开发
2026/4/16 16:19:18 15 分钟阅读

分享文章

django-simple-history完整指南:从基础安装到高级自定义
django-simple-history完整指南从基础安装到高级自定义【免费下载链接】django-simple-historyStore model history and view/revert changes from admin site.项目地址: https://gitcode.com/gh_mirrors/dj/django-simple-historydjango-simple-history是一个强大的Django扩展它能帮你轻松跟踪模型的所有变更历史并在管理界面中查看和恢复之前的版本。本文将从基础安装开始带你掌握这个工具的核心功能和高级自定义技巧。为什么选择django-simple-history在开发Django应用时跟踪数据变更至关重要。无论是为了审计目的、错误恢复还是简单的变更记录django-simple-history都能提供完整的解决方案。它具有以下优势自动跟踪无需手动编写代码即可记录模型的创建、更新和删除管理界面集成直接在Django管理后台查看和恢复历史版本轻量级实现不影响现有模型结构通过额外表存储历史数据灵活定制支持自定义历史记录字段、权限控制和界面展示快速安装与基础配置安装django-simple-history使用pip即可轻松安装pip install django-simple-history配置settings.py首先将simple_history添加到INSTALLED_APPSINSTALLED_APPS [ # ...其他应用 simple_history, ]为了自动跟踪修改用户添加中间件MIDDLEWARE [ # ...其他中间件 simple_history.middleware.HistoryRequestMiddleware, ]跟踪模型历史基本用法在需要跟踪的模型中添加HistoricalRecords字段from django.db import models from simple_history.models import HistoricalRecords class Poll(models.Model): question models.CharField(max_length200) pub_date models.DateTimeField(date published) history HistoricalRecords() # 添加这行来启用历史跟踪跟踪第三方模型对于无法直接修改的第三方模型使用register函数from simple_history import register from django.contrib.auth.models import User register(User) # 跟踪Django内置User模型生成迁移文件添加历史跟踪后需要生成并应用迁移python manage.py makemigrations python manage.py migrate对于已有数据的项目可以使用populate_history命令生成初始历史记录python manage.py populate_history --auto管理界面集成基础集成在admin.py中使用SimpleHistoryAdmin注册模型from django.contrib import admin from simple_history.admin import SimpleHistoryAdmin from .models import Poll admin.site.register(Poll, SimpleHistoryAdmin)这样就可以在管理界面中看到History按钮点击后进入历史记录页面历史记录恢复功能在历史记录页面中点击任意历史版本即可进入恢复界面点击REVERT按钮后对象将恢复到所选版本同时会创建一条新的历史记录恢复操作本身也会被记录在历史中形成完整的变更轨迹高级自定义自定义历史列表显示通过history_list_display属性自定义历史列表中显示的字段class PollHistoryAdmin(SimpleHistoryAdmin): list_display [id, question, pub_date] history_list_display [pub_date] # 在历史列表中显示发布日期 history_list_per_page 20 # 每页显示20条历史记录 admin.site.register(Poll, PollHistoryAdmin)禁用恢复功能如果需要禁用恢复功能可以在settings.py中添加SIMPLE_HISTORY_REVERT_DISABLED True禁用后历史记录页面将不再显示恢复按钮自定义历史模板django-simple-history允许自定义历史记录相关的模板主要可自定义的模板包括object_history_template: 历史记录主页面object_history_list_template: 历史记录列表部分object_history_form_template: 恢复表单部分可以通过继承SimpleHistoryAdmin并设置这些属性来自定义模板class CustomHistoryAdmin(SimpleHistoryAdmin): object_history_template myapp/custom_history.html权限控制默认情况下历史模型会继承原模型的权限。如果需要单独控制历史模型的权限可以在settings.py中设置SIMPLE_HISTORY_ENFORCE_HISTORY_MODEL_PERMISSIONS True然后可以为历史模型单独分配权限# 为用户添加查看历史记录的权限 user.user_permissions.add( Permission.objects.get(codenameview_historicalpoll), )总结django-simple-history为Django项目提供了强大而灵活的模型历史跟踪功能。从简单的安装配置到高级的自定义需求它都能满足开发中的各种场景。通过本文介绍的方法你可以轻松实现数据变更的跟踪、审计和恢复提升应用的可靠性和可维护性。要了解更多高级功能和API请参考项目的官方文档docs/。无论你是Django新手还是有经验的开发者django-simple-history都是一个值得添加到你工具箱中的实用工具。【免费下载链接】django-simple-historyStore model history and view/revert changes from admin site.项目地址: https://gitcode.com/gh_mirrors/dj/django-simple-history创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章