【问题标题】:Create json file for many to many fields in django在 django 中为多对多字段创建 json 文件
【发布时间】:2020-06-01 03:02:04
【问题描述】:

我需要创建 json 以在两个模型中插入数据,对于标签我已经创建了 json 但我不知道如何为 Question 模型创建 json 以直接从中插入数据。

模型.py

class Tag(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)

class Question(models.Model):
    name = models.CharField(max_length=255)
    Tag_name = models.ManyToManyField(Tag)

标记 json 的样子:

[
  { "name": "a" },
  { "name": "b" }
]

由于 Tag_name 是多对多字段,它在 sqlite 中创建 2 个表,但我想仅使用一个 json 添加数据。如何制作 json 以便插入两个表中的数据?

【问题讨论】:

  • 你是在使用自定义脚本读取json文件吗?
  • 我已经创建了使用 sqlite 到 json 转换的 Tag 的 json 文件
  • 你是如何通过 json 文件添加数据的?
  • 对不起,我忘了我还没有为标签添加json数据,
  • 发布脚本

标签: django django-models django-rest-framework django-forms django-views


【解决方案1】:

假设您已经阅读了 json 文件,现在您想将该数据存储到 db

json_data = get_json_data() # write code to read json here

tag_list = []
for tag in json_data:
    tag_list.append(Tag(**tag))
added_tags = Tag.objects.bulk_create(tag_list)
added_tags = [t.id for t in added_tags]

question_object = # write code to get specific question object in which you want to add this
question_object.Tag_name.add(*added_tags)

【讨论】:

    【解决方案2】:

    您可以选择内置管理命令./manage.py loaddata。我认为这更容易。

    您只需要一个用于标签模型的 json 夹具...夹具 tags.json 可能如下所示:

    [
        {
        "model":"yourapp.tag",
        "pk":1,
        "fields":{"name": "a" }
    },
      {
        "model":"yourapp.tag",
        "pk":2,
        "fields":{"name": "b" }
    }
    ]
    

    将您的tags.json 存储在应用程序内一个名为fixtures 的文件夹中。最后,运行./manage.py loaddata tags.json。它将预先填充标签模型。希望对你有帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 2018-08-09
      • 2018-12-19
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多