Class meta python django

Мета-класс в моделях 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 .

Читайте также:  Углубленное изучение java это

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 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.

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

Источник

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

Django — это высокоуровневый веб-фреймворк Python, который способствует быстрой разработке и чистому, прагматичному дизайну. Созданный опытными программистами, он берет на себя большую часть хлопот, связанных с веб-разработкой, так что вы можете сосредоточиться на написании своего приложения без необходимости изобретать колесо. Он бесплатный и с открытым исходным кодом. Перед тем, как двигаться дальше, изучите модели Django.

Метамодель (Meta Model) — это, по сути, внутренний класс вашего класса модели. Метамодель в основном используется для изменения поведения полей вашей модели, таких как изменение опций заказа, verbose_name, и многих других параметров. Добавление класса Meta к вашей модели совершенно необязательно. Для того чтобы использовать метамодель, вы должны добавить класс Meta в вашу модель, как показано ниже:

class student(models.Model): class Meta: options. 

Опции метамодели

Метамодель имеет множество опций, которые вы можете предоставить вашей модели в ее внутреннем классе meta

1. abstract

Если abstract = True, то данная модель будет абстрактным базовым классом:

class student(models.Model): class Meta: abstract = True 

2. app_label

Если модель определена за пределами приложений в INSTALLED_APPS , то ей необходимо объявить, какому приложению она принадлежит:

class student(models.Model): class Meta: app_label = 'myapp' # add app name here 

3. verbose_name

verbose_name — это по сути понятное человеку имя для вашей модели.

class student(models.Model): class Meta: verbose_name = "stu" # add verbose_name here 

4. ordering

Ordering (упорядочивание) в основном используется для изменения порядка полей вашей модели.

class student(models.Model): class Meta: ordering = [-1] 

Добавьте упорядочивание вот так [-1], и порядок изменится на убывающий.

Если мы добавим proxy = True, модель, которая является подклассом другой модели, будет рассматриваться как прокси-модель.

class Teacher(models.Model): pass class Student(Teacher): class Meta: proxy = True

Вот как мы можем создать прокси-модель.

6. permissions

Дополнительные permissions (разрешения), которые нужно внести в таблицу разрешений при создании этого объекта. Разрешения на добавление, изменение, удаление и просмотр автоматически создаются для каждой модели.

class student(models.Model): class Meta: permissions = [] 

Вы можете добавить дополнительные разрешения внутри списка.

7. db_table

Мы можем перезаписать имя таблицы, используя db_table в классе meta.

class student(models.Model): class Meta: db_table = 'X'

Это изменит имя таблицы на X.

8. get_latest_by

Возвращает последний объект в таблице на основе заданного поля, обычно используемого для DateField, DateTimeField или IntegerField.

class student(models.Model): class Meta: get_latest_by = "order_date"

Возвращает последний по порядку возрастания order_date .

Методы класса (classmethod): нужны ли они? Об этом расскажем на бесплатном вебинаре, который пройдет уже 12 октября. Поговорим об особенностях ООП в python: о наследовании и миксинах, рассмотрим ситуации, когда без classmethod не обойтись, посмотрим на реализации в известных библиотеках.

Источник

Оцените статью