モデルの初期データの提供
アプリを最初にセットアップするときに、ハードコードされたデータをデータベースに事前入力すると便利な場合があります。 移行またはフィクスチャを使用して初期データを提供できます。
移行に伴う初期データの提供
アプリの初期データを自動的に読み込む場合は、データ移行を作成します。 テストデータベースのセットアップ時に移行が実行されるため、いくつかの制限を条件として、データはそこで利用可能になります。
フィクスチャでデータを提供する
フィクスチャを使用してデータを提供することもできますが、 TransactionTestCase.fixtures を使用する場合を除き、このデータは自動的にロードされません。
フィクスチャは、Djangoがデータベースにインポートする方法を知っているデータのコレクションです。 すでにデータを取得している場合にフィクスチャを作成する最も簡単な方法は、 :djadmin: `manage.py dumpdata ` 指図。 または、フィクスチャを手動で作成することもできます。 フィクスチャは、JSON、XML、またはYAML( PyYAML がインストールされている)ドキュメントとして記述できます。 シリアル化ドキュメントには、これらのサポートされているシリアル化形式のそれぞれについての詳細があります。
ただし、例として、Person
モデルのフィクスチャがJSONでどのように表示されるかを次に示します。
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
そして、これがYAMLと同じフィクスチャです:
- model: myapp.person
pk: 1
fields:
first_name: John
last_name: Lennon
- model: myapp.person
pk: 2
fields:
first_name: Paul
last_name: McCartney
このデータは、アプリ内のfixtures
ディレクトリに保存します。
を呼び出すことでデータをロードできます :djadmin: `manage.py loaddata `<fixturename>
、 どこ<fixturename>
作成したフィクスチャファイルの名前です。 :djadmin: `loaddata` を実行するたびに、データがフィクスチャから読み取られ、データベースに再ロードされます。 これは、フィクスチャによって作成された行の1つを変更してから、:djadmin: `loaddata` を再度実行すると、行った変更がすべて消去されることに注意してください。
Djangoがフィクスチャファイルを見つける場所
デフォルトでは、Djangoは各アプリ内のfixtures
ディレクトリでフィクスチャを探します。 :setting: `FIXTURE_DIRS` 設定を、Djangoが検索する追加のディレクトリのリストに設定できます。
走っているとき :djadmin: `manage.py loaddata ` 、通常のディレクトリの検索を上書きするフィクスチャファイルへのパスを指定することもできます。