@SamarNevil

Как передать в stringio данные stdout?

Есть пользовательская команда, которая вызывает команду dumpdata. Нужно из этого вызова передать возвращенные данные в stringio, как можно это сделать?

fake_file = io.StringIO()
call_command('dumpdata', stdout=fake_file)
print(fake_file.read()) #Ноль эффекта
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Ну и зачем эти костыли? Если вам надо получить json всех данных проекта, используйте сериализатор, как это делает сама команда dumpdata:
from django.apps import apps
from django.core import serializers

# Получаем список всех моделей всех приложений из INSTALLED_APPS
# и фильтруем django'вские
models = [model for model in apps.get_models() if not model.__module__.startswith('django')]

# Сериалзиуем в json полный QuerySet каждой модели
dump = ''
for m in models:
    dump += serializers.serialize('json', m._default_manager.all())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@immaculate
Программист-путешественник
import subprocess
data = subprocess.check_output('dumpdata')
print(data)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы