Djangoのモデル定義(サンプルソース)

2010年2月14日

メールアドレス・名前を格納する簡単なテーブル(クラス)を定義してみます。

ファイルはプロジェクトホームディレクトリから、maildb/models.pyにあるとします。

1
2
3
4
5
from django.db import models

class Mail(models.Model):
    name = CharField()
    address = EMailField()



これだけです。


細かなオプションはありますが、基本的にはこれだけでメールアドレスと名前を格納できる テーブルが実現できます。
ちなみに、CharFieldは文字列型のカラム、EMailFieldも文字列型のカラムですが、 値がメールフォーマットに従っているかをチェックする機能が付加されています。
モデルクラスの定義が終わったら「python manage.py syncdb」で実際に テーブルを作成しましょう。
あとは、これをプログラム側からインポートして使用するだけです。
Djangoでは専用のインタープリタも用意されていますので、それでテーブルに対して アクセスすることもできます。
インタープリタを起動するには「python manage.py shell」を実行しましょう。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ python manage.py shell
>>> from maildb.models import Mail
>>> m = Mail.objects.get(name='hoge')
#nameカラムが'hoge'のレコードを取得
>>> print m.name
>>> print m.address
>>> am = Mail.objects.all()
#格納されているすべてのレコードをリストとして取得
>>> Mail.objects.order_by("-name")
#格納されているすべてのレコードを名前の辞書式の降順(-)で取得
#"+name"と指定すると昇順となる。
>>> m.name = 'hogehogehoge'
>>> m.update()
#カラムmのUPDATE
>>> Mail.objects.count()
#mailテーブルのレコード数を返す