python - 使用本地 JSON 文件填充 Django DB

标签 python json django

我使用 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/

相关文章:

python - 从数据中删除序列 Pandas Python Numpy

python - 使用外键添加两行 - SQL

python - 哪个更好 - 将玩家的库存存储在 JSON(数据库中的文本字段)或直接数据库中?

python - 有太多 uwsgi OSError 消息

python - django 聊天机器人网站中从 Sqlite3 到 Mysql

Python最大递归,关于sys.setrecursionlimit()的问题

c++ - 如何使用 Crypto++ 在 C++ 中解密字符串数据,其中使用 pyCrypto 在 Python 中加密的原始字符串

php - 如何检索请求有效负载

javascript - 将 Flask session 变量传递给不同的 View 返回类型 None

python - Django : Set url dynamically with <a> element in template