アプリ全体ではなく、単一のモデルで Django でdumpdata
を実行できますか?
アプリの場合:
python manage.py dumpdata myapp
ただし、「myapp.mymodel」などの特定のモデルをダンプする必要があります。その理由は、同じアプリに、ダンプしたくない300万件のレコードとデータセットがあるからです。
バージョン1.1以降では、Django dumpdata
管理コマンドを使用すると、個々のテーブルからデータをダンプできます。
./manage.py dumpdata myapp1 myapp2.my_model
コマンドラインで複数のアプリとモデルを分離することもできます。正規の定義は次のとおりです。
Django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
前述のように、Django 1.0のmanage.pyコマンドを使用してこれを行うことはできません。ただし、スクリプトを使用してJSONファイルをエクスポートし、loaddata
を使用してロードできます:
from Django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()
あなたの質問には解決策があったと思います。次のように個々のモデルをダンプできます。
./manage.py dumpdata myapp.my_model
Django model。からすべてのデータをjson形式にします。
構文:
python manage.py dumpdata app_name.model_name
例 Djangoのデフォルト認証アプリにあるgroup_permissionモデルからデータをダンプします。
python manage.py dumpdata auth.group_permission
出力についてはconsoleをご覧ください。
成功するためには、2回言って、モデルを2回指定する必要がありました。
./manage.py dumpdata myapp2.my_model myapp2.my_model
私が言っただけなら
./manage.py dumpdata myapp2 myapp2.my_model
My_modelを指定したという事実にもかかわらず、myapp2のすべてのモデルが殺到しました。
回避策として、別のアプリを作成してモデルをコピーし、db_tableメタオプションを使用して既存のテーブルを指すようにすることができます。次に、コピーしたモデルを新しいアプリにダンプします。既存のアプリは影響を受けません。
モデルごとにフィクスチャを生成する管理コマンドを作成しました。フィクスチャは以下を実行することで生成できます:
./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json