---
title: "モデルに対する初期データを投入する"
version: 2.1
locale: ja
source: https://docs.djangoproject.com/ja/2.1/howto/initial-data/
canonical: https://djangodocs.dev/ja/2.1/howto/initial-data/
---
# モデルに対する初期データを投入する

アプリケーションを最初に設定するときに、データベースにハードコードしたデータをあらかじめ入力しておくと便利なことがあります。 マイグレーションまたはフィクスチャで初期データを提供することができます。

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

アプリケーションの初期データを自動的に読み込みたい場合、[データマイグレーション](/ja/2.1/topics/migrations/#data-migrations) を作成してください。マイグレーションはテストデータベースをセットアップするときに実行されるため、データは有効になりますが、[いくつかの制限](/ja/2.1/topics/testing/overview/#test-case-serialized-rollback) があります。

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

フィクスチャを用いてデータを投入することもできますが、フィクスチャのデータは自動的には投入されません。ただし、 [`TransactionTestCase.fixtures`](/ja/2.1/topics/testing/tools/#django.test.TransactionTestCase.fixtures) を使っている場合を除きます。

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

以下の例は、シンプルな `Person` モデルに対する JSON のフィクスチャがどのようにな感じになるかを示しています:

```js
[
  {
    "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 のフィクスチャだと以下のようになります:

```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` ディレクトリ内に保存しておくことができます。

データの読み込みは簡単です: [`manage.py loaddata`](/ja/2.1/ref/django-admin/#django-admin-loaddata) `<fixturename>` を呼び出します `<fixturename>` は作成したフィクスチャファイルの名前です)。 [`loaddata`](/ja/2.1/ref/django-admin/#django-admin-loaddata) を実行するたびに、データがフィクスチャから読み込まれ、データベースに再ロードされます。 これは、フィクスチャによって作成された行の 1 つを変更した後、再度 [`loaddata`](/ja/2.1/ref/django-admin/#django-admin-loaddata) を実行すると、変更が元に戻ってしまうことを意味します。

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

デフォルトでは Django は各アプリケーション内の `fixtures` を探します。[`FIXTURE_DIRS`](/ja/2.1/ref/settings/#std-setting-FIXTURE_DIRS) 設定に追加のディレクトリのリストをセットし、Django に読み込ませることもできます。

[`manage.py loaddata`](/ja/2.1/ref/django-admin/#django-admin-loaddata) を実行する際、フィクスチャのファイルを指定して通常のディレクトリ探索をオーバーライドすることもできます。

> **See also**
>
> フィクスチャは [テストフレームワーク](/ja/2.1/topics/testing/tools/#topics-testing-fixtures) でも利用でき、テスト環境の一貫性を保つのに役立ちます。
