質問

を実行できますか 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

出力については、以下をご覧ください コンソール.

成功のために、私は二回それを言う、と同じように、モデルを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

のコード: https://gist.github.com/2394883する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top