gpt4 book ai didi

python - Django - 自定义管理操作日志记录

转载 作者:太空狗 更新时间:2023-10-29 19:36:50 39 4
gpt4 key购买 nike

您在 Django Admin 中所做的所有更改都记录在表 django_admin_table 中,您还可以在“最近的操作”中看到您最近的更改。

但是当您编写自己的“管理操作”并通过它们进行更改时,默认情况下不会记录任何内容。

例子:

def make_checked(modeladmin, request, queryset):
queryset.update(checked = 1)
make_checked.short_description = 'Mark selected products as checked'

我现在的问题是,是否可以记录自定义管理操作,如果可以,如何记录?

最佳答案

查看管理员的LogEntry型号,更重要的是 LogEntryManager .模型管理器提供了一个 log_action 方法,可以轻松添加您自己的日志条目(这是未经测试的,但应该可以让您了解):

from django.contrib.admin.models import LogEntry, CHANGE
from django.contrib.contenttypes.models import ContentType

def make_checked(modeladmin, request, queryset):
queryset.update(checked = 1)

ct = ContentType.objects.get_for_model(queryset.model)
for obj in queryset:
LogEntry.objects.log_action(
user_id=request.user.id,
content_type_id=ct.pk,
object_id=obj.pk,
object_repr=obj.description,
action_flag=CHANGE,
change_message="You have ...")
make_checked.short_description = 'Mark selected products as checked'

您可以看到 logging being used in the normal django admin 的一些示例.如果您只想为整个查询集添加一个 LogEntry,您可以手动完成(因为上面的 log_entry 需要一组特定的参数来记录单个对象) :

l = LogEntry(user_id=request.user.id, actions_flag=CHANGE, change_message="...")
l.save()

关于python - Django - 自定义管理操作日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404199/

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