Как создать файл фикстуры - PullRequest
49 голосов
/ 27 мая 2011

Я хочу создать файл фикстур в моем проекте Django.

Как я могу это сделать?

Ответы [ 6 ]

49 голосов
/ 27 мая 2011

Читать « Предоставление исходных данных для моделей ».

  1. Загрузить некоторые данные в базу данных, управляемую Django. Простые скрипты Python работают хорошо, или используют интерфейс администратора по умолчанию.
  2. Используйте manage.py dumpdata для выгрузки данных в файл фикстуры JSON. Прочитайте " django-admin.py и manage.py ".
16 голосов
/ 27 мая 2011

Вы должны создать в своем приложении каталог с именем fixtures и поместить туда файлы fixtures.

Вы можете написать их в формате json или xml. Один из простых способов сделать это - создать некоторые объекты в интерфейсе администратора, а затем запустить файл manage.py dumpdata. Это приведет к сбросу данных из созданных вами объектов в файлы фикстур. После этого вы можете просто отредактировать эти файлы в соответствии с вашими потребностями.

https://docs.djangoproject.com/en/1.7/ref/django-admin/#dumpdata-app-label-app-label-app-label-model

Если вы хотите загрузить приборы, вы используете manage.py loaddata.

https://docs.djangoproject.com/en/1.7/ref/django-admin/#loaddata-fixture-fixture

Вы можете иметь приборы с исходными данными, которые будут автоматически загружаться при запуске syncdb, просто создайте файл с именем initial_data, и Django распознает его.

https://docs.djangoproject.com/en/1.7/howto/initial-data/#automatically-loading-initial-data-fixtures

Чтобы использовать приборы для тестирования, вы должны объявить их в своем тестовом классе

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading

12 голосов
/ 20 апреля 2018

Для выгрузки данных:

python manage.py dumpdata app.model_name --indent 4 > fixtures/file_name.json

Для загрузки данных:

python manage.py loaddata fixtures/model_name.json --app app.model_name

- отступ X необязательный.

9 голосов
/ 26 апреля 2014

Я приземлился здесь, глядя, как делать светильники.Я нашел следующую статью самой легкой.

https://code.djangoproject.com/wiki/Fixtures

Добавьте путь FIXTURE_DIRS к settings.py.

import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
FIXTURE_DIRS = (
   os.path.join(PROJECT_DIR, 'fixtures'),
)
* 1010 ваших приложений. Теперь сохраните текущее состояние myapp в файл JSON.
python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json

Вот и все, время для тестирования.Отбросьте myapp таблиц ...

./manage.py sqlclear myapp | ./manage.py dbshell

Теперь перезагрузите приборы сейчас ...

./manage.py syncdb 
3 голосов
/ 22 ноября 2015

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

python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json
2 голосов
/ 18 августа 2014

Я сейчас пишу модуль django ( django-generate_fixtures ) для генерации умных приборов, следуя каждой связанной модели одного родительского объекта.

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

...