【问题标题】:Logging activity on Django's admin - Django在 Django 的管理员上记录活动 - Django
【发布时间】:2011-03-10 15:06:10
【问题描述】:

我需要在 Django 管理员上跟踪/记录活动。

我知道管理员在某处存储了一些消息,但我不知道如何访问它们以便将它们用作简单的日志。


我正在尝试跟踪以下内容:

  • 执行操作的用户

  • 已提交操作

  • 行动日期时间

谢谢大家。

【问题讨论】:

标签: python django logging django-admin


【解决方案1】:

我不得不做类似的事情,我使用了这样的东西:

from django.contrib.admin.models import LogEntry

logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
    #perform action

你可以看到all of the attributes for LogEntry,但我认为你正在寻找的是l.userl.action_timel.obj_reprobj的名称)和l.action_flag{ 1:'Add',2:'Change',3:'Delete'})。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    日志在 django 使用的数据库中的 django_admin_log 表中。

    【讨论】:

    • 谢谢!但是没有创建时间戳,你认为我能以某种方式解决这个问题吗?我正在考虑添加一个带有默认值的 sql 行
    • 您可以在LogEntry 类中使用action_time。看看我的回答,
    • django_admin_log 表只让您知道发生了变化,它不会让您知道更改了哪些值,其次,当使用多种语言时,历史记录只会以英文显示列名,不会更改为根据您的语言环境。最好制作自己的历史记录或使用 django.revision
    【解决方案3】:

    查看LogEntry 类,该类存储管理员内部操作的日志。

    您可以像这样使用它在日志中插入自定义条目:

    from settings import LOG_SIZE, LOG_THRESHOLD
    from django.contrib.admin.models import LogEntry
    
    if not LogEntry._meta.installed:
            raise ImproperlyConfigured("You'll need to put 'django.contrib.admin' in your INSTALLED_APPS setting before you can use the admin application.")
    
    def log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
            # limit log size
            log_count = LogEntry.objects.count()
    
            if log_count > LOG_THRESHOLD:
                    to_delete = LogEntry.objects.all()[LOG_SIZE:log_count]
    
                    #FIXME (!?): to_delete.delete()
                    for d in to_delete:
                            d.delete()
    
            LogEntry.objects.log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message)
    

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2012-08-01
      • 1970-01-01
      • 2020-09-06
      相关资源
      最近更新 更多