Djangoデータシードの追加方法

こんにちは!TodoONadaの土門(@daikidomon)です。

Djangoにデータシードを入れる方法を紹介したいと思います。

前回までで説明した事は以下になります。

ファイルの構造は以下になります。

mysite
├── db.sqlite3
├── hello
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-36.pyc
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── __pycache__
│   │   ├── admin.cpython-36.pyc
│   │   ├── __init__.cpython-36.pyc
│   │   ├── models.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── static
│   │   └── css
│   │       ├── bootstrap.min.css
│   │       └── style.css
│   ├── templates
│   │   └── index.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── manage.py
└── mysite
    ├── asgi.py
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py
目次

データシードの説明

ウェブアプリを開発する際、テストデータやマスターデータを入れる場合が多く存在します。

今回は、Djangoのfixtureでテストデータや、

マスターデータを生成する方法を説明します。

データシードを生成するための準備

mysite/hello/models.pyは以下の様になっています。

from django.db import models

# Create your models here.
class Personinfo(models.Model):
    GENDER = [
        ('Male','Male'),
        ('Female','Female'),
    ]
    last_name = models.CharField(max_length=30)
    first_name = models.CharField(max_length=30)
    gender = models.CharField(max_length=10,choices=GENDER)
    age = models.IntegerField(default=0)
    birthday = models.DateField()
    email = models.EmailField()

    def __str__(self):
        return '<Name:'+self.last_name+' '+self.first_name+' age:'+str(self.age)+'>'

なので今回このモデルに合うテストデータを入れます。

モデルについて疑問がある方は以下の記事を見てください。

参考: Djangoモデルの説明

今回はDjangoのfixture機能を使います。

fixtureは特にsettings.pyでFIXTURE_DIRSで追加設定しない場合、Django各アプリケーション内のfixturesフォルダにあります。

なのでまずmysite/hello内にfixturesフォルダを作ります。

その中にtest-data.jsonを作ります。

このtest-data.jsonはjson形式のデータファイルです。

test-data.jsonは以下の様になっております。

[
  {
    model: hello.Personinfo,
    fields: {
        last_name: test_1_last,
        first_name: test_1_first,
        gender:Male,
        age:20,
        birthday:2000-01-01,
        email:test_one@gmail.com
    }
  },
  {
    model: hello.Personinfo,
    fields: {
        last_name: test_2_last,
        first_name: test_2_first,
        gender:Female,
        age:10,
        birthday:2010-01-01,
        email:test_two@gmail.com
    }
  }
]

これで、入れるデータの準備は整いました。

では次はこの二つのデータを入れてみましょう。

データをデータベースに反映する方法

方法はプロジェクトファイルに入り(manage.pyと同じディレクトリ)に入り、

いかのコマンドを入れます。

python manage.py loaddata アプリ名/fixtures/データ

では実際にデータベースに反映してみます。 以下のコマンドを入れます。

python manage.py loaddata hello/fixtures/test-data.json

では<ipアドレス>:8000/adminのアドミン画面で確認してみましょう!

アドミン(管理者機能)について疑問がある方は以下の記事をみてください。

参考:Django管理者機能の説明

データを入れる前:

データを入れた後:

入れるのに成功しました!

もしテストデータなどがある場合この機能で入れてみましょう!

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次