Spec-Zone.ru › Django 1.10

Предоставление начальных данных для моделей

Иногда полезно предварительно заполнить базу данных жестко закодированными данными при первом настройке приложения. Вы можете предоставить начальные данные с помощью фикстур или миграций.

Предоставление начальных данных с помощью фикстур

Фикстура — это набор данных, который 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 вы также можете указать путь к файлу фикстуры, что переопределит поиск в обычных каталогах.

См. также

Фикстуры также используются фреймворком тестирования для тестирования, чтобы помочь создать согласованную тестовую среду.

Предоставление начальных данных с помощью миграций

Если вы хотите автоматически загружать начальные данные для приложения, не используйте фикстуры. Вместо этого создайте миграцию для вашего приложения с помощью операций RunPython или RunSQL.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.10/howto/initial-data/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API