Capture the Output of a Django Command
The documentation is very slim when it talks about how to call a Django command from code. To do this, just use call_command. To solve the trick of capturing the output of this I had to dig a little into the Django source.
The solution to capturing the output of the command being called is passing to call_command an argument called stdout to which you assign where the output is written (a file or any bite stream). Here is an example:
from django.core.management import call_command from StringIO import StringIO content = StringIO() call_command("dumpdata", stdout=content) content.seek(0) print content.read()
In the above example, we call python manage.py dumpdata, which will output all the data from all the models in all the installed apps from the current project in form of a JSON.
Hope it helps 😉