Команда loaddata
Команда loaddata применяется для загрузки данных из файлов фикстур
в базу данных Django. Фикстуры представляют собой сериализованные данные
в форматах JSON, XML или YAML. Команда загружает данные в соответствующую
модель, основываясь на содержимом файла. При загрузке данных команда
автоматически определяет модель по указанному в фикстуре идентификатору
приложения и названию модели.
Команда принимает имена файлов фикстур в качестве аргументов.
По умолчанию Django ищет файлы в директории fixtures внутри
каждого приложения. Можно указать абсолютный путь к файлу или использовать
опцию --app для указания конкретного приложения.
Также команда поддерживает загрузку сжатых файлов с расширениями
.json.gz, .xml.gz или .yaml.gz.
Синтаксис
python manage.py loaddata fixture_file [fixture_file ...]
Пример
Создадим фикстуру с данными для модели Article в формате JSON.
Файл разместим в директории fixtures приложения myapp:
# Файл myapp/fixtures/articles.json
[
{
"model": "myapp.article",
"pk": 1,
"fields": {
"title": "First article",
"content": "Content of first article",
"status": "published",
"created_at": "2025-01-01T10:00:00Z"
}
},
{
"model": "myapp.article",
"pk": 2,
"fields": {
"title": "Second article",
"content": "Content of second article",
"status": "draft",
"created_at": "2025-01-02T12:30:00Z"
}
}
]
Загрузим эту фикстуру в базу данных с помощью команды:
python manage.py loaddata articles.json
Результат выполнения команды:
"Installed 2 object(s) from 1 fixture(s)"
Пример
Загрузим несколько файлов фикстур одновременно.
Предположим, у нас есть две фикстуры: users.json и articles.json:
python manage.py loaddata users.json articles.json
Результат выполнения команды:
"Installed 5 object(s) from 2 fixture(s)"
Пример
Укажем конкретное приложение для загрузки фикстуры
с помощью опции --app. Фикстура должна находиться
в директории указанного приложения:
python manage.py loaddata --app myapp articles.json
Результат выполнения команды:
"Installed 2 object(s) from 1 fixture(s)"
Пример
Загрузим фикстуру, игнорируя существующие данные,
с помощью опции --ignore для указания моделей,
которые следует пропустить:
python manage.py loaddata --ignore myapp.article articles.json
Результат выполнения команды:
"Installed 0 object(s) from 1 fixture(s)"
Смотрите также
-
команда
dumpdata,
которая создаёт фикстуры из существующих данных -
команда
flush,
которая очищает базу данных перед загрузкой фикстур -
команда
migrate,
которая применяет миграции для подготовки базы данных -
команда
testserver,
которая запускает тестовый сервер с загрузкой фикстур