Предоставление исходных данных для моделей¶
Иногда полезно предварительно заполнить базу данных жестко закодированными данными, когда вы только создаете приложение. Вы можете предоставить исходные данные с помощью миграций или фикстур.
Предоставление исходных данных при миграции¶
Если вы хотите автоматически загружать начальные данные для приложения, создайте data migration. Миграции запускаются при настройке тестовой базы данных, поэтому данные будут доступны там, при условии some limitations.
Предоставление данных с помощью приспособлений¶
Вы также можете предоставить данные с помощью фикстур, однако эти данные не загружаются автоматически, за исключением случаев, когда вы используете TransactionTestCase.fixtures
.
Фикстура - это набор данных, которые Django умеет импортировать в базу данных. Самый простой способ создания фикстуры, если у вас уже есть некоторые данные, - использовать команду manage.py dumpdata
. Или вы можете писать фикстуры вручную; фикстуры могут быть записаны как документы JSON, XML или YAML (при установленном PyYAML). В serialization documentation есть более подробная информация о каждом из этих поддерживаемых serialization formats.
В качестве примера, вот как может выглядеть фикстура для простой модели 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
вы также можете указать путь к файлу приспособления, что отменяет поиск в обычных каталогах.
См.также
Приспособления также используются testing framework, чтобы помочь создать последовательную тестовую среду.