跟踪哪个用户更新了任何模型的哪些字段?
Track Which user has updated which fields of any models?
如何记录哪个用户在任何模型中执行了哪些更改(字段值)?
我尝试的方式:
在pre_save信号中写入代码。在那里,我得到了旧值和新值,但是请求对象(对于当前登录用户)和更新字段列表没有得到。
在Django Forms save()中写代码,但同样的问题可以获取请求对象(当前登录用户)。
您可以考虑使用 django-simply-history
[readthedocs]。您可以将此应用程序添加到 INSTALLED_APPS
和 MIDDLEWARE
:
# settings.py
INSTALLED_APPS = [
# ...
<b>'simple_history'</b>,
# ...
]
MIDDLEWARE = [
# ...
<b>'simple_history.middleware.HistoryRequestMiddleware'</b>,
# ...
]
中间件然后用于跟踪触发导致模型更改的视图的用户 "with a history"。
您可以将历史管理器添加到模型中,例如:
from django.db import models
from simple_history.models import <b>HistoricalRecords</b>
class SomeModel(models.Model):
some_field = models.CharField(max_length=128)
history = <b>HistoricalRecords()</b>
它将添加 SomeModel
的副本,其中包含时间戳和对在额外 table 中进行更改的用户的引用。
有关详细信息,请参阅 User tracking section [readthedocs]。
您也可以考虑django-dirtyfields
这使您可以获取自模型实例化以来已更改的字段值的字典。您可以子类化模型 save
方法,并将当前用户和更改的字段写入日志文件或保存日志模型。它还将允许您决定可能字段的子集或对其所做的更改值得记录,并忽略其他更改。
如何记录哪个用户在任何模型中执行了哪些更改(字段值)?
我尝试的方式:
在pre_save信号中写入代码。在那里,我得到了旧值和新值,但是请求对象(对于当前登录用户)和更新字段列表没有得到。
在Django Forms save()中写代码,但同样的问题可以获取请求对象(当前登录用户)。
您可以考虑使用 django-simply-history
[readthedocs]。您可以将此应用程序添加到 INSTALLED_APPS
和 MIDDLEWARE
:
# settings.py
INSTALLED_APPS = [
# ...
<b>'simple_history'</b>,
# ...
]
MIDDLEWARE = [
# ...
<b>'simple_history.middleware.HistoryRequestMiddleware'</b>,
# ...
]
中间件然后用于跟踪触发导致模型更改的视图的用户 "with a history"。
您可以将历史管理器添加到模型中,例如:
from django.db import models
from simple_history.models import <b>HistoricalRecords</b>
class SomeModel(models.Model):
some_field = models.CharField(max_length=128)
history = <b>HistoricalRecords()</b>
它将添加 SomeModel
的副本,其中包含时间戳和对在额外 table 中进行更改的用户的引用。
有关详细信息,请参阅 User tracking section [readthedocs]。
您也可以考虑django-dirtyfields
这使您可以获取自模型实例化以来已更改的字段值的字典。您可以子类化模型 save
方法,并将当前用户和更改的字段写入日志文件或保存日志模型。它还将允许您决定可能字段的子集或对其所做的更改值得记录,并忽略其他更改。