今度は comments_comment テーブルにすでにテストデータが保存されている状況で,updated_at 列を追加してみます.
models.py を編集して updated_at 列を定義します.日時形式の列であるので default
の代わりに auto_now=True
を使うことも可能です.
comments/models.py
from django.db import models
# Create your models here.
class Comment(models.Model):
title = models.CharField(max_length=200)
body = models.CharField(max_length=1000, default="")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
マイグレーションファイルを生成します.
(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py makemigrations comments ⏎
Migrations for 'comments':
comments\migrations\0003_comment_updated_at.py
- Add field updated_at to comment
(py39) C:\Users\lecture\Documents\django\django_comment>
生成されたマイグレーションファイルの中身を確認します.
comments/migrations/0003_comment_updated_at.py
# Generated by Django 4.0 on 2022-08-01 16:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('comments', '0002_comment_body'),
]
operations = [
migrations.AddField(
model_name='comment',
name='updated_at',
field=models.DateTimeField(auto_now=True),
),
]
念の為,マイグレーションの実行状況を確認します.
(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py showmigrations ⏎ admin [X] 0001_initial [X] 0002_logentry_remove_auto_add [X] 0003_logentry_add_action_flag_choices auth [X] 0001_initial [X] 0002_alter_permission_name_max_length [X] 0003_alter_user_email_max_length [X] 0004_alter_user_username_opts [X] 0005_alter_user_last_login_null [X] 0006_require_contenttypes_0002 [X] 0007_alter_validators_add_error_messages [X] 0008_alter_user_username_max_length [X] 0009_alter_user_last_name_max_length [X] 0010_alter_group_name_max_length [X] 0011_update_proxy_permissions [X] 0012_alter_user_first_name_max_length comments [X] 0001_initial [X] 0002_comment_body [ ] 0003_comment_updated_at contenttypes [X] 0001_initial [X] 0002_remove_content_type_name sessions [X] 0001_initial (py39) C:\Users\lecture\Documents\django\django_comment>
マイグレーションを実行して,テーブルに列を追加します.
(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py migrate ⏎
Operations to perform:
Apply all migrations: admin, auth, comments, contenttypes, sessions
Running migrations:
Applying comments.0003_comment_updated_at... OK
(py39) C:\Users\lecture\Documents\django\django_comment>
実行できたことを確認します.
(py39) C:\Users\lecture\Documents\django\django_comment>python manage.py showmigrations ⏎ admin [X] 0001_initial [X] 0002_logentry_remove_auto_add [X] 0003_logentry_add_action_flag_choices auth [X] 0001_initial [X] 0002_alter_permission_name_max_length [X] 0003_alter_user_email_max_length [X] 0004_alter_user_username_opts [X] 0005_alter_user_last_login_null [X] 0006_require_contenttypes_0002 [X] 0007_alter_validators_add_error_messages [X] 0008_alter_user_username_max_length [X] 0009_alter_user_last_name_max_length [X] 0010_alter_group_name_max_length [X] 0011_update_proxy_permissions [X] 0012_alter_user_first_name_max_length comments [X] 0001_initial [X] 0002_comment_body [X] 0003_comment_updated_at contenttypes [X] 0001_initial [X] 0002_remove_content_type_name sessions [X] 0001_initial (py39) C:\Users\lecture\Documents\django\django_comment>
テーブルに列が追加されるとともに,マイグレーションコマンドを実行した日時が updated_at 列に記録されていることを確認してください.
sqlite> select * from comments_comment; ⏎ id|title|created_at|body|updated_at 1|最初のコメント|2022-07-27 11:01:00|コメントの本文|2022-08-01 18:27:39.238835 2|2個目のコメント|2022-07-27 11:02:00|コメントの本文2|2022-08-01 18:27:39.238835 3|<3個目>のコメント|2022-07-27 11:03:00|<h1>コメントの本文3</h1>|2022-08-01 18:27:39.238835 4|4個目のコメント|2022-07-27 11:04:00|コメントの本文4|2022-08-01 18:27:39.238835 5|5個目のコメント|2022-07-27 11:05:00|コメントの本文5|2022-08-01 18:27:39.238835 6|6個目のコメント|2022-07-27 11:06:00|コメントの本文6|2022-08-01 18:27:39.238835 7|7個目のコメント|2022-07-27 11:07:00|コメントの本文7|2022-08-01 18:27:39.238835 8|8個目のコメント|2022-07-27 11:08:00|コメントの本文8|2022-08-01 18:27:39.238835 9|9個目のコメント|2022-07-27 11:09:00|コメントの本文9|2022-08-01 18:27:39.238835 10|10個目のコメント|2022-07-27 11:10:00|コメントの本文10|2022-08-01 18:27:39.238835 sqlite>
この時点で【コメント掲示板の開発】における【テストデータの設定】までとほぼ同じ状態になりました.この続きは【データベースからコメント一覧を取得して表示してみよう】です.