【Django】モデルについていろいろ書く#2
前回: 【Django】モデルについていろいろ書く#1 - hikaru’s diary
リレーション
# ドキュメントから引用 リレーショナルデータベースの強力さがテーブル同士の関係によって決まることは疑いがありません。Dango では、最も一般的な 3 つのデータベースリレーションシップを定義しています: 多対 1、多対多、1 対 1 です。
多対1にはForeignKeyを使用し、多対多にはManyToManyFieldを使用するそうです。
ForeignKeyはORMを使うと
<p>名前:{{ p.number.name }}</p>
a = Person.objects.filter(number.name='name')
って感じで楽に書けます。
Metaオプション
メタデータを設定することができます。
# ドキュメントから引用 from django.db import models class Ox(models.Model): horn_length = models.IntegerField() class Meta: ordering = ["horn_length"] verbose_name_plural = "oxen"
そのほかのオプションについてはこちらにあります。
Model Meta options | Django ドキュメント | Django
継承
modelクラスを継承します。
# ドキュメントから引用 from django.db import models class CommonInfo(models.Model): # テーブルは作成されない name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): # CommonInfoから継承 home_group = models.CharField(max_length=5)
他にconstraints,verbose_name,verbose_name_plural辺りは必須。
init.pyを作ってfrom .models import * と書くと複数ファイルに分けることが出来ます。
次回はクエリの書き方を書きます。お疲れ様でした。