Python Django 入門トップページ


Django のマイグレーション

  1. 概要と準備
  2. マイグレーションの実行
  3. モデルの作成とマイグレーション
  4. テーブルに列を追加
  5. テストデータの投入
  6. ロールバックとテーブルの再生成
  7. テーブルに再び列を追加

Django のマイグレーション

テストデータの投入

comments_comment テーブルに title 列と body 列(および created_at 列)が準備できたのでテストデータを準備して投入してみます.なお,updated_at 列はまだ準備できていないことに注意してください.

comments/fixtures/comment-data.json
[
    {
        "model": "comments.comment",
        "fields": {
            "title": "最初のコメント",
            "body": "コメントの本文",
            "created_at": "2022-07-27T11:01:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "2個目のコメント",
            "body": "コメントの本文2",
            "created_at": "2022-07-27T11:02:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "<3個目>のコメント",
            "body": "<h1>コメントの本文3</h1>",
            "created_at": "2022-07-27T11:03:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "4個目のコメント",
            "body": "コメントの本文4",
            "created_at": "2022-07-27T11:04:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "5個目のコメント",
            "body": "コメントの本文5",
            "created_at": "2022-07-27T11:05:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "6個目のコメント",
            "body": "コメントの本文6",
            "created_at": "2022-07-27T11:06:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "7個目のコメント",
            "body": "コメントの本文7",
            "created_at": "2022-07-27T11:07:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "8個目のコメント",
            "body": "コメントの本文8",
            "created_at": "2022-07-27T11:08:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "9個目のコメント",
            "body": "コメントの本文9",
            "created_at": "2022-07-27T11:09:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "10個目のコメント",
            "body": "コメントの本文10",
            "created_at": "2022-07-27T11:10:00.000"
        }
    }
]

データの投入はもちろんまだできていないことを確認しておきます.

sqlite> .headers ON ⏎
sqlite> select * from comments_comment; ⏎
sqlite>

テストデータを投入します.

(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py loaddata comments\fixtures\comment-data.json ⏎
Installed 10 object(s) from 1 fixture(s)

(py39) C:\Users\lecture\Documents\django\django_comment>

投入されたデータを確認します.

sqlite> select * from comments_comment; ⏎
id|title|created_at|body
1|最初のコメント|2022-07-27 11:01:00|コメントの本文
2|2個目のコメント|2022-07-27 11:02:00|コメントの本文2
3|<3個目>のコメント|2022-07-27 11:03:00|<h1>コメントの本文3</h1>
4|4個目のコメント|2022-07-27 11:04:00|コメントの本文4
5|5個目のコメント|2022-07-27 11:05:00|コメントの本文5
6|6個目のコメント|2022-07-27 11:06:00|コメントの本文6
7|7個目のコメント|2022-07-27 11:07:00|コメントの本文7
8|8個目のコメント|2022-07-27 11:08:00|コメントの本文8
9|9個目のコメント|2022-07-27 11:09:00|コメントの本文9
10|10個目のコメント|2022-07-27 11:10:00|コメントの本文10
sqlite>

目次に戻る