Pythonプログラミング入門・サンプル・チュートリアル

Pythonプログラミング入門・サンプル・チュートリアル

【Pythonプログラミング入門】Djangoで初期データを作成する

この記事を読んでわかること

  • Djangoで初期データを作成・ロードする方法
  • Djangoのテスト実行時に初期データをロードする方法

初期データについて

  • json,xml or yaml形式で初期データ用ファイルを用意する
  • アプリケーションのフォルダ配下に「fixtures」フォルダを作成する
  • 初期データ用ファイルはfixturesフォルダに保存する

初期データの投入

データ作成

例として、yaml形式で作成することとする。
ファイル名は「seed.yaml」としました。 「blog」アプリケーションがあり、その中にCategoryモデルがあるとする。
Categoryモデルは下記のとおりとする。

from django.db import models

class Category(models.Model):
    """掲示板のカテゴリ"""
    # 掲示板名
    name = models.CharField(max_length=30)
    # 表示順
    disp_order = models.IntegerField()
    # 削除フラグ
    deleted = models.BooleanField(default=False)

このモデルの場合、下記のように初期データを作成する。

- model: bloc.category
  fields:
    name: ゲーム
    disp_order: 0

- model: blog.category
  fields:
    name: ドラマ
    disp_order: 1

データのロード

python manage.py loaddata seed.yaml

テストで使用する場合

テストクラスのクラス変数「fixutures」に使用する初期データファイルを指定する。
後はsetUp()メソッド実行時に自動的にロードされる。

class PersonTest(TestCase):
    fixtures = ['seed1.yaml', 'seed2.yaml']

    # 以下テストコードなど