Предоставление начальных данных для моделей
Иногда полезно предварительно заполнить базу данных жестко заданными данными при первом создании приложения. Вы можете предоставить начальные данные с помощью фикстур.
Предоставление начальных данных с помощью фикстур
Фикстура — это набор данных, который Django знает, как импортировать в базу данных. Наиболее простой способ создания фикстуры, если у вас уже есть данные, — использовать команду manage.py dumpdata. Или вы можете написать фикстуры вручную; фикстуры могут быть написаны в формате JSON, XML или YAML (с установленным PyYAML). В документации по сериализации содержатся дополнительные сведения о каждом из поддерживаемых форматах сериализации.
В качестве примера вот как может выглядеть фикстура для простой 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 <fixturename>, где <fixturename> — имя созданного вами файла фикстуры. Каждый раз, когда вы запускаете loaddata, данные будут считываться из фикстуры и повторно загружаться в базу данных. Обратите внимание, что это означает, что если вы измените одну из строк, созданных фикстурой, а затем снова запустите loaddata, все внесенные вами изменения будут удалены.
Где Django находит файлы фикстур
По умолчанию Django ищет фикстуры в каталоге fixtures внутри каждого приложения. Вы можете установить параметр FIXTURE_DIRS в список дополнительных каталогов, в которых Django должен искать.
При запуске manage.py loaddata вы также можете указать путь к файлу фикстуры, что переопределит поиск в обычных каталогах.
См. также
Фикстуры также используются фреймворком тестирования для настройки согласованной тестовой среды.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/howto/initial-data/