我正在django中写一个动作。我现在想要通过动作更新的行或说行的id字段。我想记录所有动作。
我的字段状态有3个值:'activate','pending','reject'。我已经采取行动将状态更改为activate.when我执行操作时想要记录行更新,所以我需要一些值,可以存储在日志中,如id对应该行
答案 0 :(得分:9)
据我所知,您希望使用自定义操作为您更新的对象创建管理日志条目。我实际上做了类似的事情,纯粹就像django那样。作为您的自定义操作,您可以添加这段代码。
编辑:在您的操作完成后调用此函数,或者我应该说,在您更改状态并保存对象后调用此函数。
def log_it(request, object, change_message):
"""
Log this activity
"""
from django.contrib.admin.models import LogEntry
from django.contrib.contenttypes.models import ContentType
LogEntry.objects.log_action(
user_id = request.user.id,
content_type_id = ContentType.objects.get_for_model(object).pk,
object_id = object.pk,
object_repr = change_message, # Message you want to show in admin action list
change_message = change_message, # I used same
action_flag = 4
)
# call it after you save your object
log_it(request, status_obj, "Status %s activated" % status_obj.pk)
您始终可以通过获取LogEntry对象
来获取更新的对象log_entry = LogEntry.objects.filter(action_flag=4)[:1]
log_entry[0].get_admin_url()
希望这有帮助。
答案 1 :(得分:0)
这很容易!
只需创建一个查询集循环,然后就可以访问该行的每个字段并将其存储在所需的位置。
for e in queryset:
if (e.status != "pending"):
flag = False