DjangoでJSONかYAMLを使い初期データを生成させてみる

2021/10/10に公開

所属マスタテーブルを作成し、そこに初期データを生成させていきます。

初期データを生成させるまで

前提として、モデル・マイグレーションファイル作成済み・マイグレート実行済みとします。

テーブル構成

id name
1 総務
... ...

JSONを作成する

migrattionsディレクトリと同じ階層にfixturesディレクトリを生成し、その配下にJSONファイルを作成する。
また、作成するJSONは定義しているモデルがあるAppディレクトリ配下に生成すると、わかりやすくて良い。

api/api/fixtures/organization_initial.json
[
  {
    "model": "api.organization",
    "pk": 1,
    "fields": {
      "name": "総務"
    }
  },
  {
    "model": "api.organization",
    "pk": 2,
    "fields": {
      "name": "営業"
    }
  },
  {
    "model": "api.organization",
    "pk": 3,
    "fields": {
      "name": "経理"
    }
  }
]
  • model:データを生成させたいモデルの名称(App名付き)
  • pk:プライマリーキー(今回の場合はid
  • fields:オブジェクトの中には、キーにカラム名を指定し、値には生成させたい値を記述する

コマンド実行

/プロジェクトの階層で以下のコマンドを実行。

python3 manage.py loaddata organization_initial.json

コマンドが成功したら、JSONに記述したようにデータが生成されています。
Django3.2で確認済み。

YAMLバージョン

個人的にはYAML形式の方が好きかも。

api/api/fixtures/organization_initial.yaml
 - model: api.organization
  pk: 1
  fields:
    name: 総務
 - model: api.organization
  pk: 2
  fields:
    name: 営業
 - model: api.organization
  pk: 3
  fields:
    name: 経理

Discussion