Meta-Klasse in Django-Modellen
Metadaten beziehen sich auf einen bestimmten Datensatz, der Informationen über andere Daten bereitstellt. In Django verwenden wir Django-Modelle, um die Tabellen und Felder unserer Datenbank zu entwerfen. Wenn wir einige Daten über das Modell selbst hinzufügen müssen, verwenden wir die Klasse Meta
. Erfahren Sie in diesem Artikel mehr über die Meta
-Klasse in Django-Modellen.
Die Meta
-Klasse in Django
Die Klasse Meta
ist eine innere Klasse, dh sie ist im Modell wie folgt definiert:
from django.db import models
class MyModel(models.Model):
...
class Meta:
...
Die Klasse Meta
kann verwendet werden, um verschiedene Dinge über das Modell zu definieren, wie zum Beispiel Berechtigungen, Datenbankname, Singular- und Pluralnamen, Abstraktion, Reihenfolge usw. Das Hinzufügen von Meta
-Klassen zu Django-Modellen ist völlig optional.
Diese Klasse enthält auch viele Optionen, die Sie konfigurieren können. Im Folgenden sind einige der am häufigsten verwendeten Metaoptionen aufgeführt; Sie können alle Meta-Optionen hier erkunden
Django-Meta-Option - Zusammenfassung
Diese Option wird verwendet, um zu definieren, ob das Modell abstrakt ist oder nicht; sie funktionieren genauso wie abstrakte Klassen. Abstrakte Klassen sind diejenigen, die nicht instanziiert und nur erweitert oder vererbt werden können.
Modelle, die als abstrakt festgelegt sind, können nur vererbt werden. Diese Option kann verwendet werden, wenn mehrere Modelle mit gemeinsamen Feldern vorhanden sind.
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)
Hier haben die Modelle Teacher
und Student
alle Felder innerhalb des Modells Human
. Innerhalb der Datenbank werden nur die Modelle Teacher
und Student
erstellt.
Django-Meta-Option - db_table
Diese Option wird verwendet, um den Namen festzulegen, der verwendet werden soll, um die Tabelle in der Datenbank zu identifizieren. Beispiel: Wenn ich wie folgt vorgehe, wird mein Model in der Datenbank job
genannt.
from django.db import models
class JobPosting(models.Model):
class Meta:
db_table = "job"
Django Meta Option - Bestellung Order
Diese Option verwendet eine Liste von Zeichenkettenwerten, bei denen es sich um Modellfelder handelt. Es wird verwendet, um die Anordnung von Objekten eines Modells zu definieren. Wenn die Objekte dieses Modells abgerufen werden, sind sie in dieser Reihenfolge vorhanden.
from django.db import models
class JobPosting(models.Model):
dateTimeOfPosting = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-dateTimeOfPosting"]
Im obigen Beispiel werden die abgerufenen Objekte nach dem Feld dateTimeOfPosting
in absteigender Reihenfolge sortiert. (Das Präfix -
wird verwendet, um eine absteigende Reihenfolge zu definieren.)
Django-Meta-Option - verbose_name
Diese Option wird verwendet, um einen von Menschen lesbaren singulären Namen für ein Modell zu definieren und überschreibt die Standardnamenskonvention von Django. Dieser Name wird auch im Admin-Panel (/admin/
) angezeigt.
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name = "Job Posting"
Django-Meta-Option - Verbose_name_plural
Diese Option wird verwendet, um einen menschenlesbaren Pluralnamen für ein Modell zu definieren, der wiederum die Standardnamenskonvention von Django überschreibt. Dieser Name wird auch im Admin-Panel (/admin/
) angezeigt.
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name_plural = "Job Postings"