LoginSignup
0
0

More than 3 years have passed since last update.

MitamaでTodoアプリを作ってみる(2) - Modelを作りこむ

Last updated at Posted at 2020-12-02

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()

次はコントローラーとビューを作り込み、実際にアプリっぽく操作できるようにしてみましょう!

0
0
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
0
0