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

0

Метаданные относятся к определенному набору данных, который предоставляет информацию о других данных. В 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 в базе данных.

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"
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x