web-dev-qa-db-ja.com

フィクスチャファイルの作成方法

Djangoプロジェクトでフィクスチャファイルを作成したい。

これどうやってするの?

49
Viktor Apoyan

モデルの初期データの提供 」をお読みください。

  1. Djangoが管理するデータベースにデータをロードします。 Simple Pythonスクリプトはうまく動作します。または、デフォルトの管理インターフェイスを使用します。
  2. つかいます manage.py dumpdataデータをJSONフィクスチャファイルにダンプします。 「 Django-admin.py and manage.py 」を読みます。
51
S.Lott

フィクスチャという名前のアプリにディレクトリを作成し、フィクスチャファイルをそこに配置する必要があります。

それらを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/howto/initial-data/#automatically-loading-initial-data-fixtures

テスト目的でフィクスチャを使用するには、テストクラスでフィクスチャを宣言する必要があります

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading

16
Facundo Casco

データをダンプするには:

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はオプションです。

12
Jay Modi

備品の作り方を探してここに着きました。次の記事が最も簡単であることがわかりました。

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 
9
cevaris

サイト全体をダンプしたい場合は、設定でフィクスチャディレクトリを指定する必要はありません。プロジェクトでフィクスチャディレクトリを作成し、これを実行できます

python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json
3
Dr Manhattan

私は現在、Django=モジュール( Django-generate_fixtures )を書いて、1つの親オブジェクトのすべての関連モデルに従って、巧妙なフィクスチャを生成しています。

データを現在JSONとしてダンプしているので、他のフィクスチャと同じ方法でロードできます。

2
FlogFR