在Django应用中为用户动作添加日志条目
我需要为用户通过我的Django应用中的视图对数据库所做的更改创建一个日志记录。
我已经启用了Django的管理模块,并且可以通过管理界面像这样获取更改的日志:
from django.contrib.admin.models import LogEntry
from django.contrib.contenttypes.models import ContentType
recentActions = LogEntry.objects.all()
for each in recentActions:
print 'Action:', each.action_flag.__str__()
print 'Message:', each.object_repr
print 'Table:', ContentType.objects.get(id = each.content_type_id).name
我想为其他用户在我的Django应用中通过视图执行的操作创建类似的日志记录。我该怎么做呢?
2 个回答
1
如果你需要在ModelAdmin的方法里面记录日志(而不是在视图中),你可以使用一些内置的方法:log_addition()
、log_change()
和log_deletion()
。想了解更多,可以看看这个回答 https://stackoverflow.com/a/56705189/14429896
54
你已经很接近了。你只需要创建新的 LogEntry
对象并保存它们。 LogEntry
在 objects
上有一个快捷功能可以完成这个操作。
from django.contrib.admin.models import LogEntry, ADDITION, CHANGE
LogEntry.objects.log_action(
user_id=request.user.id,
content_type_id=ContentType.objects.get_for_model(model_object).pk,
object_id=object.id,
object_repr=unicode(object.title),
action_flag=ADDITION if create else CHANGE)