Django генерирование дампданных
У меня вопрос, как сгенерировать dumpdata без этого txt при запуске:
[1mЗагрузка переменных окружения .env...[0m
Вот пример:
[1mLoading .env environment variables...[0m
[
{
"model": "auth.permission",
"pk": 1,
"fields": {
"name": "Can add permission",
"content_type": 1,
"codename": "add_permission"
}
},
....
Я не могу найти решение, это раздражает, потому что я хочу сделать sh скрипт
docker-compose exec django pipenv run python manage.py dumpdata --indent 2 > fixtures/test_dumpdata.json
.
Спасибо за помощь.
Как упоминалось в одном из комментариев, вы также можете полностью обойти перенаправление stdout, используя флаги -o
или --output
, указав в качестве параметра flags правильный путь и имя файла. И в вашем случае это был бы РЕКОМЕНДУЕМЫЙ способ сделать это.
Подробнее об этом в документации здесь: https://docs.djangoproject.com/en/4.1/ref/django-admin/#cmdoption-dumpdata-output
Дополнительно, если вы хотите сделать это только один раз, вы можете зайти в сам контейнер docker.
Происходит запись stdout в указанный вами файл, но поскольку вы выполняете команду с хоста, в stdout появляется дополнительная многословность от docker.
docker exec -it <container_name> bash
python manage.py dumpdata ...
Кроме того, в вашем конкретном случае вам необходимо активировать виртуальную среду перед запуском dumpdata
Более того, вы можете автоматизировать это, создав сценарий для сброса данных в контейнер docker и вызвав его с хоста, как вы делали раньше (я верю, но сейчас не могу проверить последнее)
Спасибо за Swift. Для этого я использовал флаг -o с выходным путем.
Вот готовый сценарий.
#!/bin/bash
cd ..
docker-compose exec <container_name> pipenv run python manage.py dumpdata -o fixtures/dumpdata_test.json --indent 2
Pipenv run важен, если вы используете pipenv, -o OUTPUT задает пункт назначения, --indent 2 меняет inline на beauty json формат. Swif сказал о django-admin, мое решение все еще с manage.py