Question: I am trying to use the `call_command` method to call the dumpdata `command`. Manually, I use it as follows to save the data to a file.

```
python manage.py dumpdata appname_one appname_two > /path/to/save/file.json

```

and it saves the json file. Now, I am in a situation where I need to call this command using the `call_command` method.

I am able to print out the json from the command using the following:

```
from django.core.management import call_command

call_command('dumpdata', 'appname_one', 'appname_two')

```

Is there a way I can save the given data to a file like we do it from the command line?

Answer: 
had to redirect `sys.stdout` to the file in order to achieve the above. Something like.

```
import sys

from django.core.management import call_command

sysout = sys.stdout
sys.stdout = open('filename.json', 'w')
call_command('dumpdata', 'appname_one', 'appname_two')
sys.stdout = sysout

```
An even better way is to use Django's built-in stdout redirection for their command modules. See [docs here](https://docs.djangoproject.com/en/stable/ref/django-admin/#output-redirection).

If you want to manipulate the stream before sending it to a file, you can also pass it a StringIO buffer:

```
import os
from cStringIO import StringIO

from django.core import management

def create_fixture(app_name, filename):
    buf = StringIO()
    management.call_command('dumpdata', app_name, stdout=buf)
    buf.seek(0)
    with open(filename, 'w') as f:
        f.write(buf.read())

```