Исходные данные для моделей

Иногда бывает полезно предварительно заполнить базу данных фиксированными данными при настройке приложения в первый раз. Вы можете предоставить исходные данные с помощью миграций или снимков.

Исходные данные по миграциям

Если вы хотите автоматически загружать исходные данные для приложения, создайте миграцию данных . Миграции выполняются при настройке базы данных, поэтому данные будут там доступны с учетом определенных ограничений .

Добавление данных по снимкам

Также возможно предоставить данные с помощью снимков. Однако эти данные не загружаются автоматически, если вы не используете TransactionTestCase.fixtures .

Снимок - это набор данных, которые Django может импортировать в базу данных. Самый простой способ создать снимок, если у вас уже есть данные в вашей базе данных, - это использовать команду . Кроме того, вы также можете создавать снимки вручную; они могут быть записаны как документы JSON, XML или YAML (если установлен PyYAML ). Документация по сериализации содержит более подробную информацию о каждом из этих форматов сериализации .manage.py dumpdata

В качестве примера, вот как может выглядеть снимок модели Person в JSON:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

А вот тот же снимок в YAML:

- model: myapp.person
  pk: 1
  fields:
    first_name: John
    last_name: Lennon
- model: myapp.person
  pk: 2
  fields:
    first_name: Paul
    last_name: McCartney

Эти данные должны находиться в каталоге fixtures внутри вашего приложения.

Можно загрузить данные, вызвав , где - имя созданного вами файла моментального снимка. При каждом запуске данные моментального снимка считываются и перезагружаются в базу данных. Обратите внимание, что это означает, что если вы измените любой из объектов, созданных с помощью снимка, и перезапустите, вы перезапишете все изменения, сделанные в базе данных.manage.py loaddata <nom_instantané> <nom_instantané> loaddata loaddata

Места поиска снимков

По умолчанию Django ищет снимки в каталоге fixtures для каждого приложения. Вы можете установить этот параметр FIXTURE_DIRS для списка дополнительных каталогов, которые Django должен искать.

При запуске вы также можете указать путь к файлу моментального снимка, который переопределяет обычный поиск в каталоге.manage.py loaddata

Смотрите также

Моментальные снимки также используются тестовой инфраструктурой для помощи в подготовке согласованных тестовых сред.

Copyright ©2020 All rights reserved