我使用 Django 创建一个 Web 应用程序,我需要基本数据。为此,我有一个 JSON,其中包含我想要导入到 Django 数据库中的大量数据。
因此,我正在寻找一种无需修改 JSON 文件即可导入此数据的方法。
从 JSON 中提取:
[
{
"key": "sword",
"name": "Sword",
"tier": 1
},
{
"key": "bow",
"name": "Bow",
"tier": 1
},
...
]
我的文件包含大量数据,更改它需要很长时间。 是否有一个脚本/程序来导入与以下模型对应的所有这些数据:
from django.db import models
class Item(models.Model):
name = models.CharField(max_length=120)
tier = models.PositiveIntegerField()
我在django site上看到了这个例子,但是有必要向 JSON 中的每个项目添加一个非常长的属性模型
来自 Django 网站的示例:
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
最佳答案
您可以创建自定义管理命令来导入自定义 JSON 文件。 Docs .
import json
from django.core.management.base import BaseCommand
from myapp.models import Item
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('json_file', type=str)
def handle(self, *args, **options):
with open(options['json_file']) as f:
data_list = json.load(f)
for data in data_list:
data['pk'] = data.pop('key')
Item.objects.get_or_create(pk=data['pk'], defaults=data)
关于python - 使用本地 JSON 文件填充 Django DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309417/