Meta-Klasse in Django-Modellen

Vaibhav Vaibhav 4 Dezember 2021
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"
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Django Model