# Django 4.1.8.dev20230308103347 ドキュメント

# How to provide initial data for models

It's sometimes useful to prepopulate your database with hard-coded data when you're first setting up an app. You can provide initial data with migrations or fixtures.

## マイグレーションで初期データを投入する

アプリケーションの初期データを自動的に読み込みたい場合、データマイグレーション を作成してください。マイグレーションはテストデータベースをセットアップするときに実行されるため、データは有効になりますが、いくつかの制限 があります。

## フィクスチャでデータを投入する

フィクスチャを用いてデータを投入することもできますが、フィクスチャのデータは自動的には投入されません。ただし、 `TransactionTestCase.fixtures` を使っている場合を除きます。

フィクスチャは、Djangoがデータベースにインポートする方法を知っているデータのコレクションです。 すでにいくつかのデータがある場合、フィクスチャを作成する最も簡単な方法は `manage.py dumpdata` コマンドを使用することです。 もしくは、フィクスチャを手動で書くこともできます; フィクスチャは JSON、XML、または (PyYAMLをインストールして) YAML ドキュメントとして記述できます。 serialization documentation でサポートされている各 serialization formats の詳細を確認できます。

As an example, though, here's what a fixture for a `Person` model might look like in 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` ディレクトリ内に保存しておくことができます。

You can load data by calling `manage.py loaddata` `<fixturename>`, where `<fixturename>` is the name of the fixture file you've created. Each time you run `loaddata`, the data will be read from the fixture and reloaded into the database. Note this means that if you change one of the rows created by a fixture and then run `loaddata` again, you'll wipe out any changes you've made.

### Django がフィクスチャのファイルを探す場所

デフォルトでは Django は各アプリケーション内の `fixtures` を探します。`FIXTURE_DIRS` 設定に追加のディレクトリのリストをセットし、Django に読み込ませることもできます。

`manage.py loaddata` を実行する際、フィクスチャのファイルを指定して通常のディレクトリ探索をオーバーライドすることもできます。

参考

フィクスチャは テストフレームワーク でも利用でき、テスト環境の一貫性を保つのに役立ちます。