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

Вернуться на верх