Исходные данные для моделей ¶
Иногда бывает полезно предварительно заполнить базу данных фиксированными данными при настройке приложения в первый раз. Вы можете предоставить исходные данные с помощью миграций или снимков.
Исходные данные по миграциям ¶
Если вы хотите автоматически загружать исходные данные для приложения, создайте миграцию данных . Миграции выполняются при настройке базы данных, поэтому данные будут там доступны с учетом определенных ограничений .
Добавление данных по снимкам ¶
Также возможно предоставить данные с помощью снимков. Однако эти данные не загружаются автоматически, если вы не используете 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
Смотрите также
Моментальные снимки также используются тестовой инфраструктурой для помощи в подготовке согласованных тестовых сред.