演習課題「モデルを定義しよう」
右の環境には、Djangoで「myblog」プロジェクトに「diary」というアプリケーションを作成してあります。また、MySQLに「mydb」というデータベースを作成してあります。
このアプリケーションのmodels.pyを修正して、diaryテーブルに「topic」というカラムを追加してください。
手順は次の通りです。
+ カラムを追加するマイグレーションファイルを生成する
+ 生成したファイルの設定をデータベースに反映する
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#06:Djangoのモデルを作ろう
ここでは、Djangoからデータベースを操作する、モデルについて学習します。モデルを使うと、Pythonのオブジェクトとして、データベースのレコードを操作できるようになります。
モデルは、データベースのレコードを Pythonのオブジェクトに割り当てる機能です。
通常、データベースを操作するにはSQLを使います。SQLは、データベースの操作で標準となる重要な技術ですが、Pythonとは文法や考え方も異なります。
そこで使うのが、モデルというオブジェクトです。モデルは、データベースのレコードをオブジェクトに割り当てます。モデルを使えば、SQL(エスキューエル)を書かなくても、Pythonのコードでデータベースのレコードをオブジェクトとして操作できできます。
このようにオブジェクトでデータベースを操作するツールを「ORマッパー」(Object-relational mapper)と呼びます。
データベースを作成する時、照合順序を指定します。照合順序は、データを並び替える時に、何を基準にするかを指定します。日常でも、五十音順やアルファベット順といったルールにより、データを並び替えますが、ここでは、並び順を指定する文字コードを設定します。
myapp/myapp/settings.py# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
myapp/bbs/models.pyfrom django.db import models
class Article(models.Model):
content = models.CharField(max_length=200)
def __str__(self):
return self.content
マイグレーションとは、データベースの中身を一括して移行したり変更する作業です。Djangoのマイグレーション機能を利用すると、データベースの変更を一度に行うことができます。また、変更内容を元に戻したい場合も、コマンド一つで実現できます。
Djangoのマイグレーションは、2段階で行います。まず専用のコマンドを使ってマイグレーションファイルを作成します。それからマイグレーションを実行します。
Djangoでは、モデルを作成しておくと、マイグレーションコマンドでMySQLのテーブルを作成することができます。
$ python manage.py makemigrations bbs
$ python manage.py migrate
- Django
https://www.djangoproject.com/
- Django ドキュメント | Django documentation | Django
https://docs.djangoproject.com/ja/2.0/
- Home | djangoproject.jp
http://djangoproject.jp/
- Djangoウェブフレームワーク (Python) - ウェブ開発を学ぶ | MDN
https://developer.mozilla.org/ja/docs/Learn/Server-side/Django
- ★ Djangoでの開発 ダイジェスト - Qiita
https://qiita.com/zaburo/items/0e15f6c150caa13ca34c
- Django入門: 初心者でも10分でWebサービスを作れる!PythonフレームワークDjangoとPaizaCloudの使い方 - paiza開発日誌
https://paiza.hatenablog.com/entry/2018/02/28/paizacloud_django