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

5. proxy

Если мы добавим 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 не обойтись, посмотрим на реализации в известных библиотеках.

  • Зарегистрироваться на бесплатный вебинар

Источник: https://habr.com/ru/company/otus/blog/692124/


Интересные статьи

Интересные статьи

После того, как мы закончили разработку веб-приложения, оно должно быть размещено на хосте, чтобы общественность могла получить доступ к нему из любого места. Мы посмотри...
Я давно знаком с Битрикс24, ещё дольше с 1С-Битрикс и, конечно же, неоднократно имел дела с интернет-магазинами которые работают на нём. Да, конечно это дорого, долго, местами неуклюже...
В данной статье будет представлена подробная инструкция по установке и настройке программ Apache, Python и PostgreSQL для обеспечения работы Django проекта в ОС MS Windows. Django...
«Какой моделью кода мне воспользоваться?» — часто возникающий, но нечасто разбираемый вопрос при написании кода для архитектуры х64. Тем не менее, это довольно интересная проблема, и ...
Всем привет. Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт? Для пополнения базы знаний...