gpt4 book ai didi

python - 使用 Django 和 DRF 的审计日志

转载 作者:行者123 更新时间:2023-11-28 21:44:26 56 4
gpt4 key购买 nike

我需要在我的一个使用 Django 1.8Django-Rest-Framework 3.2.2 的项目中实现审计日志功能。我扩展了 BaseUserManager 类 以创建用户模型,因为我必须在我的应用程序中使用电子邮件作为用户名(如果此信息很重要的话)。

下面是我的数据库设计,它将保存日志:

**fields    type    desc**

id pk ( auto_increment)
cust_id FK customer
customer_name FK customer
user_id FK user
user_name FK user
module Varchar(100) sales,order,billing,etc
action Varchar(10) Create/Update/Delete
previous_value varchar(500)
current_value varchar(500)
Datetime Datetime timestamp of change

我试过了https://pypi.python.org/pypi/django-audit-log但根据我的要求,它有 2 个问题-

  1. 它没有按照我的要求捕获数据,我知道这是我的问题,所以我修改了它的代码并将我的字段添加到它的模型中。
  2. 它没有捕获模块信息。行为是随机的。

我正在寻求建议以继续使用此功能。哪个包最适合我的任务。

P.S 我也试过 Django-reversion 并且我没有数据版本控制的要求。

谢谢

最佳答案

我通过修改 auditlog 代码实现了我所需要的 -

  1. 在审计日志的 LogEntry 模型中添加了必填字段。
  2. 修改receivers.py的log_create、log_update、log_delete函数,将信息保存在新增字段中。

使用这个我已经完成了一半。现在我面临的唯一问题是,由于 1 个表的模型实例也包含其他表的信息,因为表中使用了 FK。

为了解决这个问题,我可以想出一个效果很好但我对它不满意的解决方案。我在每个模型中添加了一个类似 include_in_model() 的函数,并修改了 auditlog 的 registry.py register() 函数以获取这些字段并仅使用它来保存 LogEntry 模型中的信息。

这种方法需要我在我的每个模型类中创建这个 include_in_model() 函数,并为特定模型传递必需的字段。这样我就避免了 FK 相关信息。

关于python - 使用 Django 和 DRF 的审计日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40740061/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com