Metaクラス
モデルクラス内部にいるやつ。
↓これ
class Book(models.Model):
class Meta:
db_table = 'book'
ordering = ['created_at']
id = models.UUIDField(...
title = models.CharField(...
「モデルクラス全体に対する付加情報を記述する場所」とのこと。
db_table
データベースにおけるテーブル名を定義するところ。
これ書かずにマイグレしたら予期せぬテーブル名になったような・・・。
大体いつも書くやつ。
ordering
そのモデルのオブジェクトを取得する時(例:Book.objects.all())のデフォルトの並び順を指定するところ。
上記だとcreated_atの昇順で取得される。
['-created_at']のようにハイフンを付けてあげると降順になる。
abstract
Metaクラスに「abstract = True」と指定したクラスに一般的な情報(created_atとか)を含めてあげて、
そのクラスを継承することで、フィールドを使いまわせて便利とのこと。
(このモデルはデータベーステーブルの作成には使用されない。)
class Common(models.Model):
class Meta:
abstract = True
id = models.UUIDField(...
created_at = models.DateTimeField(...
updated_at = models.DateTimeField(...
is_deleted = models.BooleanField(...
class Book(Common):
title = models.CharField(...
上記↑だと、Bookモデルはid, created_at, updated_at, is_deleted, titleという5つのフィールドを持つことになる。
#他にも沢山あるようです。
参考
現場で使えるDjango REST Frameworkの教科書
Model Meta options | Django documentation | Django