Django は単一モデルのデータをダンプしますか?
-
12-09-2019 - |
質問
を実行できますか dumpdata
で ジャンゴ アプリ全体ではなく、単一のモデルのみを対象とします。そうする場合、どのようにすればよいでしょうか?
アプリの場合は次のようになります。
python manage.py dumpdata myapp
ただし、「myapp.mymodel」などの特定のモデルをダンプしたいと考えています。その理由は、同じアプリ内に 300 万レコードを超える巨大なデータセットがあり、それらをダンプしたくないからです。
解決
バージョン1.1およびそれ以上のように、ジャンゴ管理コマンドの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 モデルから json 形式に取り込みます。
構文:
python manage.py dumpdata app_name.model_name
のために 例 Django のデフォルトの認証アプリに存在する group_permission モデルからデータをダンプします。
python manage.py dumpdata auth.group_permission
出力については、以下をご覧ください コンソール.
./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