我正在尝试登录Django。我想记录用户保存或修改数据的每个场合。在我的信号处理程序代码中,我有类似的东西:
@receiver(post_save)
def post_save_callback(sender, instance, created, raw, using, update_fields, **kwargs):
logger.info(
'Post-save called for %s. Created? %r. update_fields: %s',
sender, created, json.dumps(update_fields)
)
我还想记录执行数据操作的用户的用户名,基本上是当前登录的用户。我怎样才能获得此用户名?
答案 0 :(得分:1)
如文档here中所述,当许多代码可能对同一事件感兴趣时,信号非常有用。
是这样的吗?
如果在管理面板中执行数据操作,您可以考虑覆盖log_change
对象的ModelAdmin
方法,并且可以使用request.user.username
来获取当前登录用户的用户名。< / p>
def log_change(self, request, object, message):
logger.info('User %s changed user data %s. %s' %
(request.user.username, object, message)
super(MyClass, self).log_change(request, object, message)
请记住,ModelAdmin已在管理日志,文档here
中记录更改答案 1 :(得分:1)
无法完成。当前用户仅可通过使用post_save
时无法使用的请求获得。
要实现您的目标,您可以执行以下任一操作: