Django モデルのメタクラス
メタデータとは、別のデータに関する情報を提供する特定のデータセットを指します。Django では、Django モデルを使用してデータベースのテーブルとそのフィールドを設計します。モデル自体に関するデータを追加する必要がある場合は、Meta
クラスを使用します。この記事で、Django モデルの Meta
クラスの詳細を確認してください。
Django の Meta
クラス
Meta
クラスは内部クラスです。つまり、モデル内で次のように定義されています。
from django.db import models
class MyModel(models.Model):
...
class Meta:
...
Meta
クラスを使用して、権限、データベース名、単数形と複数形の名前、抽象化、順序付けなど、モデルに関するさまざまなことを定義できます。Meta
クラスの Django モデルへの追加は完全にオプションです。
このクラスには、構成可能な多くのオプションも付属しています。以下は、一般的に使用されるメタオプションの一部です。あなたはすべてのメタオプションを探索することができますここ
Django メタオプション-要約
このオプションは、モデルが抽象的であるかどうかを定義するために使用されます。それらは抽象クラスと同じように機能します。抽象クラスは、インスタンス化できず、拡張または継承のみが可能なクラスです。
抽象として設定されたモデルは、継承することしかできません。共通のフィールドを持つモデルが複数ある場合は、このオプションを使用できます。
from django.db import models
class Human(models.Model):
genders = (
("M", "Male"),
("F", "Female"),
("NB", "Non-binary"),
("T", "Transgender"),
("I", "Intersex"),
("O", "Other"),
("PNTS", "Prefer not to say"),
)
name = models.CharField(max_length=200)
age = models.IntegerField(default=0)
gender = models.CharField(max_length=50, choices=genders)
class Meta:
abstract = True # Important
class Teacher(Human):
subject = models.CharField(max_length=200)
class Student(Human):
grade = models.IntegerField(default=0)
ここで、Teacher
モデルと Student
モデルには、Human
モデル内のすべてのフィールドがあります。データベース内では、Teacher
モデルと Student
モデルのみが作成されます。
Django メタオプション-db_table
このオプションは、データベース内のテーブルを識別するために使用する名前を設定するために使用されます。例:次のようにすると、モデルの名前はデータベースで job
になります。
from django.db import models
class JobPosting(models.Model):
class Meta:
db_table = "job"
Django メタオプション-注文
このオプションは、モデルフィールドである文字列値のリストを取ります。モデルのオブジェクトの順序を定義するために使用されます。このモデルのオブジェクトが取得されると、それらはこの順序で存在します。
from django.db import models
class JobPosting(models.Model):
dateTimeOfPosting = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-dateTimeOfPosting"]
上記の例では、取得されたオブジェクトは、dateTimeOfPosting
フィールドに基づいて降順で並べ替えられます。(-
プレフィックスは降順を定義するために使用されます。)
Django メタオプション-verbose_name
このオプションは、モデルの人間が読める形式の単数名を定義するために使用され、Django のデフォルトの命名規則を上書きします。この名前は、管理パネル(/admin/
)にも反映されます。
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name = "Job Posting"
Django メタオプション-Verbose_name_plural
このオプションは、モデルの人間が読める複数形の名前を定義するために使用されます。これにより、Django のデフォルトの命名規則が上書きされます。この名前は、管理パネル(/admin/
)にも反映されます。
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name_plural = "Job Postings"