Djangoのユーザ管理アプリ作成の目次ページはこちらです。
今回はDBに列を追加して、追加した列を表示させます。
UdemyのDjangoの基礎をマスターして、3つのアプリを作ろう!を参考に勉強していています。
Djangoで追加する機能の概要
ユーザの詳細ページに自己紹介を表示させます。
データベースに自己紹介の列がないので、列追加から行います。
Models.pyから列を追加
データベースの定義を決めて作成したのは、models.pyのファイルでした。
なので、今回もModels.pyに追記をします。
内容は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 |
from django.db import models # Create your models here. #ユーザ情報のDB情報 class UserInfo(models.Model): userName = models.CharField(max_length=200) country = models.CharField(max_length=50, null=True) sex = models.CharField(max_length=200, null=True) address = models.CharField(max_length=200, null=True) #自己紹介列を追加 selfIntroduction = models.CharField(max_length=500, null=True) |
自己紹介の列を追加します。
その後、マイグレーションファイルを作成し、DBへ反映します。
1 2 3 4 5 6 |
マイグレーションファイルを作成 cd C:\django\myproject python manage.py makemigrations myapp マイグレーションファイルからDBへ反映 python manage.py migrate |
これでDBに自己紹介の列が追加されました。
今回はDBに自己紹介を直接登録します。
今はユーザ情報をメンテナンスる機能はないためです。
python manage.py makemigrations myapp
を行うと、C:\django\myproject\myapp\migrationsの中に
「0002_userinfo_selfintroduction.py」ができます。
ここには列追加をする情報がかかれています。
detail.htmlを修正して、自己紹介列を表示させる
detail.htmlを修正して、自己紹介列を表示できるように修正していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!-- テーブル --> <table> <tbody> <tr> <!-- 5列分ユーザ情報を出力 --> <td>ID:{{userinfoDetail.id}} <br> 名前:{{userinfoDetail.userName}} <br> 出身国:{{userinfoDetail.country}} <br> 住所:{{userinfoDetail.address}} <br> 性別:{{userinfoDetail.sex}} <br> <!-- 自己紹介列を追加 --> 自己紹介:{{userinfoDetail.selfIntroduction}} </td> </tr> </tbody> </table> |
12行目で追加した自己紹介列を表示させています。
結果はこんな感じです。
views.pyデータを抽出する箇所は修正不要です。
userinfoDetail = get_object_or_404(UserInfo,pk=id)
上記ですべての列の情報を抽出して、detail.htmlに渡しているいるからです。
そのため、増えた列を表示する修正をhtml側に行えばOKなのです。
少し発展編:DB登録した改行をHTML側でも反映させる
先ほどの表示結果、実はDBに登録した改行が反映されていません。
本当は以下のように登録されています。
ゆいです。
プログラミングスクールに行くか迷っています!
情報を下さい!
DBに登録されている改行コードはHTMLの<br>ではないためです。
対応方法としては、{{変数|linebreaksbr}}とするだけです。
1 2 |
<!-- 自己紹介列を追加 --> 自己紹介:{{userinfoDetail.selfIntroduction|linebreaksbr}} |
表示結果を見てみると上手く改行されました。
改行が含まれるデータを扱うことがある場合は、覚えておいてください。