3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DjangoのMetaクラス

Posted at

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

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?