18

メソッドを使用しcall_commandて dumpdata を呼び出そうとしていますcommand。手動で、次のように使用してデータをファイルに保存します。

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

jsonファイルを保存します。今、call_commandメソッドを使用してこのコマンドを呼び出す必要がある状況にあります。

次を使用して、コマンドからjsonを出力できます。

from django.core.management import call_command

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

コマンドラインから行うように、指定されたデータをファイルに保存する方法はありますか?

4

5 に答える 5

17

さらに良い方法は、Django の組み込み stdout リダイレクションをコマンド モジュールに使用することです。こちらのドキュメントを参照してください。

ファイルに送信する前にストリームを操作したい場合は、StringIO バッファを渡すこともできます。

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())
于 2013-12-09T20:40:58.373 に答える