在Django中从数据库创建JSON树

1 投票
1 回答
761 浏览
提问于 2025-04-18 08:46

我需要在Python / Django中创建一个JSON文件,以反映树形结构。

我有两个选择:要么在创建树的每个节点时都去数据库查询,要么一次性从数据库提取所有数据,然后再创建树。我觉得对成千上万的数据每次都去查询数据库会很慢,所以我决定先从数据库创建原始的JSON数据,然后再根据这些数据创建JSON树。我已经从数据库(PostgreSQL)创建了原始的JSON数据。这个原始的JSON数据看起来是这样的:

[{"Name": "Michael Andrew", "class": "A", "order": "B", "family": "C"}, {"Name": "John Belew", "class": "A", "order": "D", "family": "E"}, {"Name": "Warren Noah", "class": "F", "order": "G", "family": "H"}]

我想用上面的数据在Django / Python中生成以下JSON树:

    {
"name": "jsontree",
"children":[
{
    "name": "A",
    "children": [
    {
        "name": "B",
        "children": [
        {
            "name": "C",
            "children": [
            {
                "name": "Michael Andrew"
            }]
        }]
    },
    {
        "name": "D",
        "children": [
        {
            "name": "E",
            "children": [
            {
                "name": "John Belew"
            }]
        }]
    }]

},
{
    "name": "F",
    "children": [
    {
        "name": "G",
        "children": [
        {
            "name": "H",
            "children": [
            {
                "name": "Warren Noah"
            }]
        }]
    }]
}]
    }

在Python中,有什么高效的方法可以做到这一点吗?我听说过django-mptt可以从数据库创建JSON树,但我对它具体是什么还不太了解。

1 个回答

1

要从数据库导出一个json文件,可以使用 python manage.py dumpdata 这个命令。加上 --indent=2 选项后,输出的结果会以 json树 的形式显示。如果你有一个叫做 blog 的django应用程序,那么可以运行下面的命令:

python manage.py dumpdata blog --indent=2 > blog/blog.json

或者,如果你想导出django的用户模型,可以使用:

python manage.py dumpdata auth.User --indent=2 > user.json

撰写回答