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

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

Предоставление исходных данных при миграциях

Если вы хотите автоматически загружать исходные данные для приложения, создайте миграцию данных . Миграции запускаются при настройке тестовой базы данных, поэтому данные будут там доступны с некоторыми ограничениями .

Предоставление данных с приборами

Вы также можете предоставить данные с помощью фикстур, однако эти данные не загружаются автоматически, за исключением случаев, когда вы используете TransactionTestCase.fixtures.

Приспособление - это набор данных, которые Django знает, как импортировать в базу данных. Самый простой способ создать прибор, если у вас уже есть некоторые данные, - это использовать команду. Или вы можете написать светильники вручную; фикстуры могут быть записаны как документы JSON, XML или YAML (с установленным PyYAML ). Документация по сериализации содержит более подробную информацию о каждом из этих поддерживаемых форматов сериализации .manage.py dumpdata

Однако в качестве примера вот как 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>loaddataloaddata

Где Django находит файлы фикстур ¶

По умолчанию Django ищет fixturesфикстуры в каталоге внутри каждого приложения. Вы можете установить FIXTURE_DIRSсписок дополнительных каталогов, в которых должен искать Django.

При запуске вы также можете указать путь к файлу фикстуры, который переопределяет поиск в обычных каталогах.manage.py loaddata

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

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

Copyright ©2021 All rights reserved