Команда loaddata

Команда loaddata применяется для загрузки данных из файлов фикстур в базу данных Django. Фикстуры представляют собой сериализованные данные в форматах JSON, XML или YAML. Команда загружает данные в соответствующую модель, основываясь на содержимом файла. При загрузке данных команда автоматически определяет модель по указанному в фикстуре идентификатору приложения и названию модели.

Команда принимает имена файлов фикстур в качестве аргументов. По умолчанию Django ищет файлы в директории fixtures внутри каждого приложения. Можно указать абсолютный путь к файлу или использовать опцию --app для указания конкретного приложения. Также команда поддерживает загрузку сжатых файлов с расширениями .json.gz, .xml.gz или .yaml.gz.

Синтаксис

pythonpython manage.py loaddata fixture_file [fixture_file ...]

Пример

Создадим фикстуру с данными для модели Article в формате JSON. Файл разместим в директории fixtures приложения myapp:

python# Файл 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"
    }
  }
]

Загрузим эту фикстуру в базу данных с помощью команды:

pythonpython manage.py loaddata articles.json

Результат выполнения команды:

python"Installed 2 object(s) from 1 fixture(s)"

Пример

Загрузим несколько файлов фикстур одновременно. Предположим, у нас есть две фикстуры: users.json и articles.json:

pythonpython manage.py loaddata users.json articles.json

Результат выполнения команды:

python"Installed 5 object(s) from 2 fixture(s)"

Пример

Укажем конкретное приложение для загрузки фикстуры с помощью опции --app. Фикстура должна находиться в директории указанного приложения:

pythonpython manage.py loaddata --app myapp articles.json

Результат выполнения команды:

python"Installed 2 object(s) from 1 fixture(s)"

Пример

Загрузим фикстуру, игнорируя существующие данные, с помощью опции --ignore для указания моделей, которые следует пропустить:

pythonpython manage.py loaddata --ignore myapp.article articles.json

Результат выполнения команды:

python"Installed 0 object(s) from 1 fixture(s)"

Смотрите также

  • команда dumpdata,
    которая создаёт фикстуры из существующих данных
  • команда flush,
    которая очищает базу данных перед загрузкой фикстур
  • команда migrate,
    которая применяет миграции для подготовки базы данных
  • команда testserver,
    которая запускает тестовый сервер с загрузкой фикстур