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 😉