Мета-класс в моделях Django

Мета-класс в моделях Django

Метаданные относятся к определенному набору данных, который предоставляет информацию о других данных. В Django мы используем модели Django для разработки таблиц нашей базы данных и их полей. Если нам нужно добавить данные о самой модели, мы используем класс Meta. Подробнее о классе Meta в моделях Django читайте в этой статье.

класс Мета в Django

Класс Meta - это внутренний класс, то есть он определен внутри модели следующим образом:

from django.db import models

class MyModel(models.Model):
    ...
    class Meta:
        ...

Класс Meta может использоваться для определения различных вещей о модели, таких как разрешения, имя базы данных, единственное и множественное число, абстракция, порядок и т. Д. Добавление классов Meta в модели Django совершенно необязательно.

Этот класс также имеет множество параметров, которые вы можете настроить. Ниже приведены некоторые из наиболее часто используемых мета-параметров; вы можете изучить все мета-варианты здесь

Django Meta Option - Аннотация

Эта опция используется, чтобы определить, является ли модель абстрактной или нет; они работают так же, как абстрактные классы. Абстрактные классы - это те, которые не могут быть созданы и могут быть только расширены или унаследованы.

Модели, заданные как абстрактные, могут быть только наследованы. Эту опцию можно использовать, если есть несколько моделей с общими полями.

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 Meta Option - db_table

Эта опция используется для установки имени, которое должно использоваться для идентификации таблицы в базе данных. Например: если я сделаю что-то следующее, имя моей модели будет job в базе данных.

from django.db import models

class JobPosting(models.Model):
    
    
    class Meta:
        db_table = "job"

Django Meta Option - Заказ

Эта опция принимает список строковых значений, которые являются полями модели. Он используется для определения порядка объектов модели. Когда объекты этой модели будут извлечены, они будут представлены в этом порядке.

from django.db import models

class JobPosting(models.Model):
    dateTimeOfPosting = models.DateTimeField(auto_now_add = True)
    
    
    class Meta:
        ordering = ["-dateTimeOfPosting"]

В приведенном выше примере извлеченные объекты будут упорядочены на основе поля dateTimeOfPosting в порядке убывания. (Префикс - используется для определения порядка убывания.)

Django Meta Option - 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"
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.

LinkedIn GitHub

Сопутствующая статья - Django Model

  • Удалить запись модели в Django
  • Функция параметра On_delete в моделях Django