モデルの初期データの提供—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/howto/initial-data
移動先:案内検索

モデルの初期データの提供

アプリを最初にセットアップするときに、ハードコードされたデータをデータベースに事前入力すると便利な場合があります。 移行またはフィクスチャを使用して初期データを提供できます。

移行に伴う初期データの提供

アプリの初期データを自動的に読み込む場合は、データ移行を作成します。 テストデータベースのセットアップ時に移行が実行されるため、いくつかの制限を条件として、データはそこで利用可能になります。


フィクスチャでデータを提供する

フィクスチャを使用してデータを提供することもできますが、 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 ` 、通常のディレクトリの検索を上書きするフィクスチャファイルへのパスを指定することもできます。

も参照してください

フィクスチャは、テストフレームワークでも使用され、一貫性のあるテスト環境をセットアップするのに役立ちます。