Создайте файл json для множества полей в django - PullRequest
0 голосов
/ 17 февраля 2020

Мне нужно создать 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)

Tag json выглядит так:

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

Поскольку поле Tag_name является многим для многих, оно создает 2 таблицы в sqlite, но я хочу добавить данные, используя только один json. Как сделать json, чтобы данные в обеих таблицах вставлялись?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Вы можете выбрать встроенную команду управления, ./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. Это предварительно заполнит модель Tag. Надеюсь, это поможет ...

0 голосов
/ 17 февраля 2020

Предположим, вы прочитали 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)
...