django 如何实现数据的用户操作记录?

2019-09-24 16:44:01 +08:00
 huazhaozhe
这里操作记录就是数据库里一条记录的增删改查的记录了(包括有外键关系的字段), 改的话记录得包括修改之前的值和修改之后的值, 全局的, 不要每个模型都要写逻辑或者类 /方法或者装饰器, 因为有的地方不一定能得到 request, 也不可能都把 request 传进去或者全都加一遍装饰器, 而且有的逻辑会更改那些表提前并不知道, 比如有 ContentType 这种

目前自己使用 django 的信号实现了全局的增删改的记录, 查没有实现, 第三方插件也只有增删改
与用户关联的目前还没有实现
更进一步, 需要记录每个用户在每一个请求的过程中所有的操作记录, 也就是每个操作记录是和一个用户的某一次请求相关联的

另外思否那边貌似人好少, 提个问都没几个人看, 不知道这里用 django 的多不多呀
7351 次点击
所在节点    Python
26 条回复
huazhaozhe
2019-09-25 11:02:54 +08:00
@n329291362
@omri
还真有这个写法, 不过官方文档只介绍了 QuerySet filter, 没想到 manager, 不过跟踪实例字段变化已经有更好的实现思路了
manager 这部分也只是在 ORM 这边, 要和 request 有关系还是要在每个视图里面写逻辑
lowman
2019-09-25 11:43:23 +08:00
如果我没理解错楼主的需求的话, 我觉得 django signal 机制 可以实现这个需求
huazhaozhe
2019-09-25 12:27:58 +08:00
@lowman
对的, 会用到, 只是全局跟踪变更记录的话, 用信号机制就可以
omri
2019-09-25 15:23:20 +08:00
@huazhaozhe 有最终方案了吗?能分享一下那?共同学习哈
huazhaozhe
2019-09-25 16:00:05 +08:00
@omri
我自己想法大概是这样子:
全局 request 用 threadlocal, 这个比较简单, 上面有人说了有现成的
数据的增删改记录第三方也有, 比如 django-simple-history, 在每个模型里面加个字段就可以, 与用户关联的话参考 django-simple-history 文档有相关描述, 是可以满足这个需求的, 不过我打算自己用 django 的信号机制写这部分逻辑, 可以全局记录, 没全局需求的话用 django-simple-history 应该完全够了
kerwinlv12
2021-01-29 09:03:50 +08:00
@huazhaozhe 我这边有好几个应用,我需要全局使用信号,我发现只能应用到一个 app 模块,期待回复,感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/603768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX