0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?