Иногда необходимо после установки проекта добавить в базу данных начальные данные. Для этого можно использовать файлов фикстуры(fixtures).
Файлы предварительной настройки (fixtures) содержат набор данных, которые Django может импортировать в базу данных. Самый простой путь создания таких файлов (при условии что ваша база данных уже содержит некоторую нужную информацию) это использование команды manage.py dumpdata. Вы также может создать данные “вручную” используя синтаксис XML, YAML(при установленном PyYAML) или JSON и сохранив результат в соответствующем формате. В разделе сериализация данных более детально описан каждый из поддерживаемых форматов. (Прим. пер. : существуют дополнения, которые могут помочь в создании файлов настроек, н-р, пакет django-fixture-magic)
Н-р, ниже представлено содержимое такого файла в формате JSON для простой модели Person:
[
{
"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 в папке приложения и сохраните в ней файлы с данными. ( Прим. пер. : имя fixtures предопределено в Django, и в случае опечатки в названии - данные не будут найдены!)
Загрузить данные просто: выполните команду manage.py loaddata <fixturename>, где <fixturename> это имя созданного вами файла с данными. Каждый раз при запуске loaddata, данные будут считываться из файлов и записываться в базу данных. Обратите внимание, вы можете изменить загруженные начальные данные в процессе работы, но при следующем вызове loaddata все изменения будут утеряны.
По умолчанию Django ищет и “просматривает” папки fixtures внутри папки с приложением. Вы можете немного изменить это поведение, указав в настройках проекта FIXTURE_DIRS список дополнительных директорий для поиска.
При запуске manage.py loaddata, вы можете указать абсолютный путь к файлу с данными, “отменив” тем самым механизм поиска по умолчанию.
См.также
Предварительная настройка данных также используется в тестировании для создания и настройки среды для тестирования.
Mar 31, 2016