为django中的多对多字段创建json文件

为django中的多对多字段创建json文件,django,django-models,django-rest-framework,django-forms,django-views,Django,Django Models,Django Rest Framework,Django Forms,Django Views,我需要创建json来插入两个模型中的数据,对于标记,我已经创建了json,但是我不知道如何创建json来直接从模型中插入数据 model.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_le

我需要创建json来插入两个模型中的数据,对于标记,我已经创建了json,但是我不知道如何创建json来直接从模型中插入数据

model.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" }
]
[
    {
    "model":"yourapp.tag",
    "pk":1,
    "fields":{"name": "a" }
},
  {
    "model":"yourapp.tag",
    "pk":2,
    "fields":{"name": "b" }
}
]

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

假设您已经读取了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)

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

您只需要标记模型的json装置。。。fixture,
tags.json
,可能看起来像:

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

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

您是否使用自定义脚本读取json文件?我已经使用sqlite到json转换为标记创建了json文件。您是如何通过json文件添加数据的?对不起,我忘了我还没有从json为标记添加数据,请发布脚本