在Django中从数据库创建JSON树
我需要在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