我在https://github.com/miettinj/mezzanine中有一个小的django夹层应用程序,它可以正确地翻译管理界面,但它也应该将页面历史转换为可理解的形式。(我猜它直接来自数据库中的django_admin_log)
现在管理日志看起来像这样:
{
"model": "admin.logentry",
"pk": 2,
"fields": {
"action_time": "2022-11-18T08:34:03.136Z",
"user": 1,
"content_type": 18,
"object_id": "1",
"object_repr": "janes post",
"action_flag": 2,
"change_message": "[{\"changed\": {\"fields\": [\"Content\", \"Keywords\"]}}]"
}
}
字符串
我怎样才能改变它,使它翻译动作'changed',保持字段名称不变,并完全删除unuserfrienly字符:("[{\)
?
在附件中,用蓝色包围的行是正确的,用红色包围的行是当前功能。
1条答案
按热度按时间jtjikinw1#
我可能会迟到,但我最近也有同样的问题。
首先,你首先展示一个json(在python中也是一个dict),它可以很容易地在python中解析:
字符串
这可以在python中解析,只保留“change_message”字段,将其视为json表示(JSON双解析)或字典表示:
Dict:
型
输出为:[{“changed”:{“fields”:[“Content”,“Keywords”]}}]
JSON
型
输出为 [{“changed”:{“fields”:[“Content”,“Keywords”]}}]
最终解析
现在,要么获取整个JSON文件,然后解析它以获取“change_message”,要么直接从LogEntry获取“change_message”,然后需要进一步解析它并定义所需的显示。例如,您可以执行以下操作:
型
输出为:* 已更改:内容,关键字 *