Python バックエンド プログラム言語

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.pyFIXTURE_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管理者機能の説明

データを入れる前:

データを入れた後:

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

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

関連記事

-Python, バックエンド, プログラム言語

Copyright© スタートアップIT企業社長のブログ , 2020 All Rights Reserved.