DjangoでDBに初期データを登録する。

Djangoにはfixtureという、初期データを登録する機能が備わっている。XML、json、yaml形式のファイルを該当ディレクトリに配置してコメンドを打つとデータを挿入してくれる。今回はyaml形式を使う。

  1. アプリケーションディレクトリにfixturesというディレクトリを作る

    $ python manage.py startapp myapp

    で作られたディレクトリ直下に/fixtures/という名前のディレクトリを作成する。

  2. 初期データ(yamlファイル)を作る

    ここでは都道府県テーブルにデータを挿入すると想定してprefecture.yamlを作る。
    「.htm」と「.html」のように、「.yml」と「.yaml」という拡張子があるようだが「.yaml」を使う。

    - model: myapp.prefecture
      pk: 1
      fields:
        name: "北海道"
    - model: myapp.prefecture
      pk: 2
      fields:
        name: "青森県"
    

    中身はこんな感じ。
    「myapp」のprefectureモデルに挿入する。
    モデル名の定義はクラスなのでPrefectureと頭が大文字だが、小文字でOK。

  3. コマンドを入力して挿入する。

    manage.pyのある階層で

     $ python3 manage.py loaddata prefecture.yaml

    を実行。

    Installed 1 object(s) from 1 fixture(s)

    のように表示されれば成功。

    CommandError: Problem installing fixture 'prefecture': yaml is not a known serialization format.

    のようなエラーが出るかもしれない。

    これはPythonがyaml形式のファイルを認識できないためで、pyyamlというライブラリを追加する必要がある。

    $ pip3 install pyyaml

    のようにして追加すればOK。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です