需求:
在django的后台中,用户对数据的修改时,我希望能够实现记录用户修改的值。用户修改了什么?
记录修改前的数据内容
记录修改后的数据内容
要求1:我不想在手动去写中间间了,因为手动写触发中间件需要对没一张数据表都写一次,实在太耗时间了。
要求2:可以简单通过插件方式来对数据表的修改进行记录。而且可以自动适配django admin后台。
django后台admin中添加查看修改历史记录功能
【功能太简单,所以代码就不post上来了,直接看图吧】
实现后的展示
修改记录功能入口
修改了其它字段
修改了图片
删除数据后的查看记录
页面中删除数据ID3
http://127.0.0.1:10005/admin/shangpin/paymentaccount/3/change/
删除数据ID3后
可以通过删除数据的ID值+history 来查看删除掉的数据记录
http://127.0.0.1:10005/admin/shangpin/paymentaccount/3/history/
栏目中查看已经删除的数据的历史记录
【查看删除数据列表–点击进入】
【查看删除数据列表】
【选择已经删除的 数据id=5 的数据 进行数据恢复】
数据恢复和回滚
恢复后的【操作记录】
恢复后的数据栏显示
恢复数据后,这时ID=5的数据就不应该存在 【已删除记录】中
恢复前的【已删除记录】
恢复后的【已删除记录】
每次删除后恢复都算与一次修改
记录不同用户对数据的增删改
修正一下这个记录变更次数的字段,因为之前是每当用户提交数据之后,会让数据库保存两次,这就降低了性能
修正为 仅仅保存一次,并且解决并发性的问题
减少数据库操作:通过锁定记录并一次性保存,避免了多次数据库调用,同时保证了并发安全。
有作用的参考
1官方文档
https://django-simple-history.readthedocs.io/en/latest/
2 官方文档
https://django-simple-history.readthedocs.io/en/latest/quick_start.html
3 Django官方推荐
https://django.fun/docs/django-simple-history/3.0/historical_model/
4 github问答
https://github.com/jazzband/django-simple-history/issues
5 修改字段显示名字
https://forum.djangoproject.com/t/displaying-verbose-name-while-using-django-simple-history/30497
网络公开搜索以下参考作用不大
1
https://medium.com/@horillahrms/how-to-track-history-in-django-using-django-simple-history-in-2024-104e696c4207
2
https://medium.com/django-unleashed/mastering-the-art-of-django-simple-history-a-tutorial-for-medium-with-examples-c25196339130
3
https://zenn.dev/nakamura196/articles/a57ec98fe157d6
4
https://www.caktusgroup.com/blog/2023/02/13/introduction-django-simple-history/
5 视频
https://www.youtube.com/watch?v=36oCa176Wys&ab_channel=StrikeItBroke
6 视频
https://www.youtube.com/watch?v=5aEvnsfBaNU&ab_channel=CloudWithDjango
7
https://www.reddit.com/r/django/comments/1ennagr/djangosimplehistory_vs_djangoreversion_vs/
8 【视频】讲解的不多 视频很长
https://www.youtube.com/watch?v=irE_crggOCc&ab_channel=MattLayman
视频up的联系方式
https://x.com/mblayman/status/1887490263708209329