web-dev-qa-db-ja.com

Django単一モデルのデータをダンプしますか?

アプリ全体ではなく、単一のモデルで Djangodumpdataを実行できますか?

アプリの場合:

python manage.py dumpdata myapp

ただし、「myapp.mymodel」などの特定のモデルをダンプする必要があります。その理由は、同じアプリに、ダンプしたくない300万件のレコードとデータセットがあるからです。

123
nategood

バージョン1.1以降では、Django dumpdata 管理コマンドを使用すると、個々のテーブルからデータをダンプできます。

./manage.py dumpdata myapp1 myapp2.my_model

コマンドラインで複数のアプリとモデルを分離することもできます。正規の定義は次のとおりです。

Django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
213
simplyharsh

前述のように、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()
95
dar

あなたの質問には解決策があったと思います。次のように個々のモデルをダンプできます。

./manage.py dumpdata myapp.my_model
6
Harold

Django model。からすべてのデータをjson形式にします。

構文:

python manage.py dumpdata app_name.model_name

Djangoのデフォルト認証アプリにあるgroup_permissionモデルからデータをダンプします。

python manage.py dumpdata auth.group_permission

出力についてはconsoleをご覧ください。

6
Shubho Shaha

成功するためには、2回言って、モデルを2回指定する必要がありました。

./manage.py dumpdata myapp2.my_model myapp2.my_model

私が言っただけなら

./manage.py dumpdata myapp2 myapp2.my_model

My_modelを指定したという事実にもかかわらず、myapp2のすべてのモデルが殺到しました。

4
Csaba Toth

回避策として、別のアプリを作成してモデルをコピーし、db_tableメタオプションを使用して既存のテーブルを指すようにすることができます。次に、コピーしたモデルを新しいアプリにダンプします。既存のアプリは影響を受けません。

1
Ogre Codes

モデルごとにフィクスチャを生成する管理コマンドを作成しました。フィクスチャは以下を実行することで生成できます:

./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json

コード: https://Gist.github.com/239488

1
Jonas Geiregat