Mitama Advent Calendar3日目です。
前回→『MitamaでTodoアプリを作ってみる(1) - Mitamaアプリの構成』
木瓜丸です。今回は引き続きTodoアプリを組んでみましょう。
モデルの設計
今回はTodoをオブジェクトとして表現するためのモデルを作成します。
次のようなプロパティをもたせればTodoとしては十分かなと思います。
プロパティ名 | 型 | 説明 |
---|---|---|
node | Node | Todoを登録したユーザー、またはグループ |
subject | String | Todoの題名 |
dead | DateTime | Todoの期日 |
done | Boolean | 終わったかどうか |
注目してほしい点は、Nodeという型があることです。Nodeを型として指定した場合、そのプロパティにはUser、またはGroupのインスタンスを入れることができます。参照するときもUserやGroupの形で取得することができます。
コード
では、コードを書いてみましょう。
model.pyを次のように変更してください。
from mitama.db import BaseDatabase
from mitama.db.types import * #コメントアウトを外す
class Database(BaseDatabase):
pass
db = Database()
class Todo(db.Model):
node = Column(Node)
subject = Column(String)
dead = Column(DateTime)
done = Column(Boolean)
db.create_all() #コメントアウトを外す
...どうですかね?割と簡単に書けるかと思います。
2行目はモデルを作る上で使用する型の種類を読み込んでいます。StringやInteger、BooleanなどのSQLAlchemyに存在する型に加えて、User、Group、Node(UserとGroupを両方扱うための型)を読み込むことができます。
from mitama.db.types import *
11行目〜15行目のクラス定義がモデルの定義です。
class Todo(db.Model):
node = Column(Node)
subject = Column(String)
dead = Column(DateTime)
done = Column(Boolean)
17行目の処理は、作成したモデルのテーブルをデータベース上に実際に作成する作業をしています。
db.create_all()
次はコントローラーとビューを作り込み、実際にアプリっぽく操作できるようにしてみましょう!