在Django中从数据库创建JSON树

时间:2014-06-05 18:40:10

标签: python django postgresql

我需要创建JSON文件以反映Python / Django中的树结构。

我有两个选项 - 在创建树的每个节点时调用数据库或一次性从数据库中提取数据,然后创建树。我认为在每个节点上调用数千个数据的数据库将是一项缓慢的任务,因此决定先从数据库创建原始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 个答案:

答案 0 :(得分:1)

要从数据库转储json文件,请使用python manage.py dumpdata。使用--indent=2将输出作为json tree。如果您有一个名为 blog 的django应用程序,请运行以下命令:

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

或django用户模型:

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