1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Django入門】簡単なブログページを作る際の大まかな流れ ~ブログモデル編~

Posted at

はじめに

未来電子テクノロジーでインターンをしている<小栗>です。
「プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。

この記事は、【Django入門】簡単なブログページを作る際の大まかな流れ ~アプリケーション編~
こちらの記事の続きです!

Django Brothersというサイトをまとめた
記事になっているので、Django初心者にはおすすめです!

データベースを作る

データベースは表のようになっており、テーブルと呼ばれます。
そして、新たにテーブルを作る際、モデルを使います。
モデルとは、データベースとやりとりをするクラスのことです。
クラスとはオブジェクトの設計図のような役割を果たす物です。
このモデルは、各アプリケーション内のmodels.pyに記述します。

この内容について以下で説明します。

/django_bog/blogs/models.py

from django.db import models

class Blog(models.Model):
    title = models.CharField(blank=False, null=False, max_length=150)
    text = models.TextField(blank=True)
    created_datetime = models.DateTimeField(auto_now_add=True)
    updated_datetime = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

from django.db import modelsについて
Djangoにおけるモデル型の基本形で、Blogモデルに継承させて作成していきます。
このクラスをもとに作られたインスタンスはデータベースに保存するという設定をしています。

#####title = models.CharField(blank=False, null=False, max_length=150)について
3行目の内容は、titleというフィールド(列)名をつけています。
このtitleにはmodels.CharFieldという型が指定されていて、文字列を入力できる様にしています。
blank=False, null=Falseはフィールドが空白であることは許容されないという意味です。
max_length=150はタイトルが最大150文字という制限がかけられています。

#####created_datetime, updated_datetimeについて
これらのフィールドでは、models.DateTimeFieldという型が指定されているので、日時情報が保存されるようになっています。
引数でauto_now_add, auto_nowが与えられているので、それぞれインスタンスが作成された日時、更新された日時が自動的に保存されます。

#####def __str__(self)について
これは各インスタンスを表示する際に利用する文字列を表しています。
つまり、ブログ一覧のようなページで、タイトルを表示するのか、本文を表示するのか、はたまた追加日時を表示するのかといった設定ができます。
return self.titleとするとタイトルが、return self.textとすると本文が表示されるということです。

マイグレーション

データベースを作成する際の流れは**「models.pyファイルで設計 → マイグレート処理で反映」**です。
従って先ほどまで作っていたmodels.pyファイルをマイグレートしてデータベースに反映させる必要があります。
その際に必要なコマンドは以下の二つです。

django_blog
$ python manage.py makemigrations
$ python manage.py migrate

#####$ python manage.py makemigrationsについて
django_blog/blogs/migrationsディレクトリの中にマイグレーションファイルが新たに追加されます。
マイグレーションファイルとはmodels.pyファイルで作成したデータベースの設計情報がまとめられたものです。

#####python manage.py migrateについて
マイグレーションファイルの情報をデータベースに反映させるコマンドです。

※models.pyファイルを変更した際はその都度、マイグレード処理が必要になります。

Adminページを利用する

#####スーパーユーザーアカウントを作成
$ python manage.py createsuperuser

Adminページを編集するために、admin.pyファイルを編集します。
#####BlogモデルをAdminに追加する

django_blog/blogs/admin.py
from django.contrib import admin 
from .models import Blog #admin.pyファイルと同じ階層にあるmodels.pyファイルで定義したBlogモデルをインポートしている。

admin.site.register(Blog) #インポートしたBlogモデルを、Adminページで利用できるようにしている。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?