Djangoプロジェクトでフィクスチャファイルを作成したい。
これどうやってするの?
「 モデルの初期データの提供 」をお読みください。
manage.py dumpdata
データをJSONフィクスチャファイルにダンプします。 「 Django-admin.py and manage.py 」を読みます。フィクスチャという名前のアプリにディレクトリを作成し、フィクスチャファイルをそこに配置する必要があります。
それらをjsonまたはxmlで書くことができます。それらを作成する簡単な方法の1つは、管理インターフェースでオブジェクトを作成してから、manage.py dumpdataを実行することです。これは、作成したオブジェクトのデータをフィクスチャファイルにダンプします。その後、必要に応じてこれらのファイルを編集するだけで済みます。
https://docs.djangoproject.com/en/1.7/ref/Django-admin/#dumpdata-app-label-app-label-app-label-model
フィクスチャをロードする場合は、manage.py loaddataを使用します。
https://docs.djangoproject.com/en/1.7/ref/Django-admin/#loaddata-fixture-fixture
Syncdbの実行時に自動的にロードされる初期データを備えたフィクスチャを使用できます。initial_dataという名前のファイルを作成するだけで、Djangoはそれを認識します。
テスト目的でフィクスチャを使用するには、テストクラスでフィクスチャを宣言する必要があります
https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading
python manage.py dumpdata app.model_name --indent 4 > fixtures/file_name.json
python manage.py loaddata fixtures/model_name.json --app app.model_name
--indent Xはオプションです。
備品の作り方を探してここに着きました。次の記事が最も簡単であることがわかりました。
https://code.djangoproject.com/wiki/Fixtures
FIXTURE_DIRS
アプリのsettings.py
。
import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
FIXTURE_DIRS = (
os.path.join(PROJECT_DIR, 'fixtures'),
)
次に、現在のmyapp
状態をJSONファイルにダンプします。
python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json
それで、テストの時間です。 myapp
テーブルを削除...
./manage.py sqlclear myapp | ./manage.py dbshell
今、フィクスチャをリロードします...
./manage.py syncdb
サイト全体をダンプしたい場合は、設定でフィクスチャディレクトリを指定する必要はありません。プロジェクトでフィクスチャディレクトリを作成し、これを実行できます
python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json
私は現在、Django=モジュール( Django-generate_fixtures )を書いて、1つの親オブジェクトのすべての関連モデルに従って、巧妙なフィクスチャを生成しています。
データを現在JSONとしてダンプしているので、他のフィクスチャと同じ方法でロードできます。