class meta django что это

Русские Блоги

Подробное объяснение класса Meta в модели Django

Определите метаданные для вашей модели через встроенный класс «Meta класса», подобный следующему:

Ниже перечислены все возможные мета-опции. Ни один из них не требуется. Добавлять ли мета-класс в модель совершенно необязательно.

app_label

Опция app_label используется только в одном случае, т. Е. Класс модели отсутствует в файле models.py в пакете приложения по умолчанию. В настоящее время вам необходимо указать приложение класса модели. Например, если вы написали класс модели в другом месте, и этот класс модели принадлежит myapp, вам нужно указать его как:

db_table

db_table используется для указания имени пользовательской таблицы базы данных. Django имеет набор имен таблиц базы данных по умолчанию, соответствующий модели данных, сгенерированной в соответствии с определенными правилами. Если вы хотите использовать настраиваемое имя таблицы, укажите его через этот атрибут, например:

Если этот параметр не указан, Django будет использовать app_label + ‘_’ + module_name в качестве имени таблицы.

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

db_tablespace

Некоторые базы данных имеют табличные пространства, такие как Oracle. Вы можете использовать db_tablespace, чтобы указать табличное пространство базы данных, в которое помещается таблица базы данных, соответствующая этой модели.

get_latest_by

Поскольку в методе управления Django есть метод lastest (), он должен получить последний ряд записей. Если ваша модель данных имеет поля типа DateField или DateTimeField, вы можете использовать эту опцию, чтобы указать, какое поле lastest () выбрано в соответствии с.

Имя поля DateField или DateTimeField. Если указана эта опция, модуль будет иметь функцию get_latest () для получения «последнего» объекта (в зависимости от этого поля):

managed

Поскольку Django автоматически генерирует сопоставленные таблицы базы данных на основе классов моделей, если вы не хотите, чтобы Django делал это, вы можете установить для управляемого значения значение False.

Значением по умолчанию является True. Если для этого параметра установлено значение True, Django может переносить, переносить, удалять и т. Д. Таблицы базы данных. В это время Django будет управлять жизненным циклом таблиц в базе данных.

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

order_with_respect_to

Этот параметр обычно используется во многих отношениях, он указывает на связанный объект. То есть после того, как связанный объект найдет этот объект, он будет отсортирован. После указания этого свойства вы получите метод get_XXX_order () и set_XXX_order (), с помощью которого вы можете установить или вернуться к отсортированному объекту.

Например, если PizzaToppping связан с объектом Pizza, сделайте это:

. Который позволяет сортировать начинки согласно соответствующей пицце.

ordering

В этом поле указывается, по какому полю сортируется результирующий набор записей, возвращаемый объектом модели Django. Например, следующий код:

Следует отметить, что независимо от того, сколько полей вы используете для сортировки, администратор использует только первое поле

permissions

Разрешения в основном используются в модуле управления Django Admin. Если вы установите это свойство, описание разрешений указанного метода будет более понятным и читабельным.

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

Это кортеж или список из двухэлементных кортежей, а формат двух двухэлементных кортежей: (access_code, human_readable_permission_name).

unique_together

Опция unique_together используется, когда вам нужно сохранить уникальность через два поля. Это ограничит как уровень администратора Django, так и уровень базы данных (то есть соответствующий оператор UNIQUE будет включен в оператор CREATE TABLE). Например: комбинация FirstName и LastName человека должна быть уникальной, тогда вам нужно установить ее следующим образом:

verbose_name

Значение verbose_name очень просто, чтобы дать вашему классу модели более удобочитаемое имя:

verbose_name_plural

Эта опция указывает, что такое форма модели во множественном числе, например:

Если эта опция не указана, Django будет использовать verbose_name + «s».

Источник

Meta Варианты модели ¶

Доступные Meta варианты ¶

abstract ¶

app_label ¶

Если вы хотите представить модель в формате app_label.object_name или, app_label.model_name вы можете использовать model._meta.label или model._meta.label_lower соответственно.

Читайте также:  bloodborne начало игры что делать

base_manager_name ¶

db_table ¶

Имя таблицы базы данных для использования в модели:

Имена таблиц ¶

Используйте строчные имена таблиц для MariaDB и MySQL

Цитирование имен таблиц для Oracle

Чтобы соответствовать ограничению Oracle на 30 символов для имен таблиц и соответствовать обычным соглашениям для баз данных Oracle, Django может сокращать имена таблиц и переводить их в верхний регистр. Чтобы предотвратить такие преобразования, используйте имя в кавычках в качестве значения для db_table :

Такие имена в кавычках также можно использовать с другими поддерживаемыми базами данных Django; Однако, за исключением Oracle, кавычки не действуют. См. Примечания Oracle для получения более подробной информации.

db_tablespace ¶

default_manager_name ¶

default_related_name ¶

get_latest_by ¶

См. latest() Документацию для получения дополнительной информации.

managed ¶

По умолчанию это True означает, что Django создаст соответствующие таблицы базы данных в процессе migrate миграции или как ее часть и удалит их как часть команды flush управления. То есть Django управляет жизненными циклами таблиц базы данных.

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

Если модель с managed=False содержит, ManyToManyField который указывает на другую неуправляемую модель, то промежуточная таблица для соединения «многие ко многим» также не будет создана. Однако промежуточная таблица между одной управляемой и одной неуправляемой моделью будет создана.

Если вам нужно изменить это поведение по умолчанию, создайте промежуточную таблицу как явную модель (с managed установленной по мере необходимости) и используйте ManyToManyField.through атрибут, чтобы отношение использовало вашу пользовательскую модель.

order_with_respect_to ¶

Порядок Question объектов, связанных с Answer объектом, можно установить, передав список Answer первичных ключей:

order_with_respect_to неявно устанавливает ordering параметр

Внутренне order_with_respect_to добавляет дополнительное поле / столбец базы данных с именем _order и устанавливает параметр модели ordering для этого поля. Следовательно, order_with_respect_to и ordering не могут использоваться вместе, и порядок, добавленный с помощью, order_with_respect_to будет применяться всякий раз, когда вы получаете список объектов этой модели.

ordering ¶

Порядок по умолчанию для объекта, используемый при получении списков объектов:

Это кортеж или список строк и / или выражений запроса. Каждая строка представляет собой имя поля с необязательным префиксом «-», указывающим на убывающий порядок. Поля без знака «-» будут отсортированы по возрастанию. Используйте строку «?» на заказ случайным образом.

Например, чтобы отсортировать по pub_date полю по возрастанию, используйте это:

Чтобы упорядочить по pub_date убыванию, используйте это:

Чтобы упорядочить по pub_date убыванию, а затем по author возрастанию, используйте это:

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

Если для запроса не указан порядок, результаты возвращаются из базы данных в неопределенном порядке. Определенный порядок гарантируется только при упорядочивании по набору полей, которые однозначно идентифицируют каждый объект в результатах. Например, если name поле не является уникальным, его упорядочение не гарантирует, что объекты с одинаковым именем всегда будут отображаться в одном и том же порядке.

permissions ¶

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

default_permissions ¶

proxy ¶

required_db_features ¶

required_db_vendor ¶

select_on_save ¶

См. django.db.models.Model.save() Дополнительные сведения о старом и новом алгоритме сохранения.

indexes ¶

Список индексов, которые вы хотите определить в модели:

unique_together ¶

Вместо этого используйте UniqueConstraint с constraints опцией.

Наборы имен полей, вместе взятые, должны быть уникальными:

Это список списков, которые должны быть уникальными при рассмотрении вместе. Он используется в администраторе Django и применяется на уровне базы данных (т. Е. Соответствующие UNIQUE операторы включены в оператор). CREATE TABLE

Для удобства unique_together при работе с одним набором полей может быть единый список:

Читайте также:  что делать если каждый день болит голова у взрослого

index_together ¶

indexes Вместо этого используйте эту опцию.

Наборы имен полей, которые, вместе взятые, индексируются:

Этот список полей будет проиндексирован вместе (т. Е. Будет выдано соответствующее заявление.) CREATE INDEX

Для удобства index_together при работе с одним набором полей может быть единый список:

constraints ¶

Список ограничений, которые вы хотите определить для модели:

verbose_name ¶

Удобочитаемое имя объекта в единственном числе:

verbose_name_plural ¶

Имя объекта во множественном числе:

Источник

Опции Meta модели¶

Доступные опции Meta ¶

abstract ¶

app_label ¶

base_manager_name ¶

db_table ¶

Имя таблицы базы данных, используемой для модели:

Имена таблиц¶

Чтобы сэкономить ваше время, Django автоматически получает имя таблицы базы данных из имени класса вашей модели и приложения, в котором оно содержится. Имя таблицы базы данных модели строится путем соединения «метки приложения» модели – имени, которое вы использовали в manage.py startapp – с именем класса модели с подчеркиванием между ними.

Если имя таблицы вашей базы данных является зарезервированным словом SQL или содержит символы, которые не допускаются в именах переменных Python, особенно дефис, то это нормально. За кулисами Джанго экранирует имена столбцов и таблиц.

Используйте строчные имена таблиц для MariaDB и MySQL

Экранирование имени таблицы для Oracle

Чтобы соответствовать ограничению в 30 символов, которое Oracle допускает для имен таблиц, и соответствовать обычным соглашениям для баз данных Oracle, Django может сокращать имена таблиц и превращать их в верхний регистр. Чтобы предотвратить такие преобразования, используйте имя в кавычках в качестве значения для db_table :

Такие экранированные имена могут также использоваться с другими поддерживаемыми базами данных Django; однако, за исключением Oracle, кавычки не имеют никакого эффекта. Смотрите примечания к Oracle для более подробной информации.

db_tablespace ¶

default_manager_name ¶

default_related_name ¶

get_latest_by ¶

Смотрите документ latest() для получения дополнительной информации.

managed ¶

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

order_with_respect_to ¶

Порядок связанных с Question объектов Answer объектов можно установить, передав список первичных ключей Answer :

order_with_respect_to неявно устанавливает опцию ordering

ordering ¶

Порядок по умолчанию для объекта, для использования при получении списков объектов:

Это кортеж или список строк и/или выражений запроса. Каждая строка представляет собой имя поля с необязательным префиксом «-», который указывает в порядке убывания. Поля без начального «-» будут упорядочены по возрастанию. Используйте знак «?» для случайной сортировки.

Чтобы упорядочить по pub_date по убыванию, затем по author по возрастанию, используйте это:

Сортировка не является «бесплатной» операцией. Каждое поле, которое вы добавляете к сортировке, добавляет нагрузку на базу данных. Каждый добавляемый вами внешний ключ также будет неявно включать все свои сортировки по умолчанию.

Если в запросе не указан порядок, результаты возвращаются из базы данных в неуказанном порядке. Конкретное упорядочение гарантируется только при упорядочении с помощью набора полей, которые однозначно идентифицируют каждый объект в результатах. Например, если поле name не уникально, упорядочение по нему не гарантирует, что объекты с одинаковыми именами всегда будут появляться в одном и том же порядке.

permissions ¶

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

default_permissions ¶

proxy ¶

required_db_features ¶

required_db_vendor ¶

select_on_save ¶

Смотрите django.db.models.Model.save() для получения дополнительной информации о старом и новом алгоритме сохранения.

indexes ¶

unique_together ¶

Наборы имен полей, которые, взятые вместе, должны быть уникальными:

Это список списков, которые должны быть уникальными при совместном рассмотрении. Он используется в админке Django и применяется на уровне базы данных (т.е. соответствующие операторы UNIQUE включены в оператор CREATE TABLE ).

Для удобства unique_together может быть одним списком при работе с одним набором полей:

index_together ¶

Наборы имен полей, которые вместе взятые индексируются:

Для удобства index_together может быть одним списком при работе с одним набором полей:

constraints ¶

verbose_name ¶

Удобочитаемое имя для объекта, единственное число:

Читайте также:  grand theft auto v criminal enterprise starter pack что это

verbose_name_plural ¶

Имя во множественном числе для объекта:

Источник

Документация Django 1.9

Параметры Meta ¶

abstract ¶

app_label ¶

db_table ¶

Название таблицы в базе данных для этой модели:

Название таблицы¶

Экономя ваше время, Django автоматически создаст название таблицы из названия модели и приложения. Название таблицы состоит из названия приложения(“app label”) – название используемое для команды manage.py startapp – и названия модели, объединенные нижним подчеркиванием.

Если имя колонки это зарезервированное SQL слово, или содержит символы запрещенные в названиях переменной в Python – в частности, дефис – все нормально. Django автоматически экранирует название колонок и таблиц.

Используйте нижний регистр для названий таблиц в MySQL

Названия таблиц в кавычках для Oracle

Т.к в Oracle есть ограничение в 30 символов на название таблиц, и для соблюдения соглашений работы с Oracle, Django может ограничить название таблицы и преобразовать его в верхний регистр. Чтобы избежать этого, укажите название в кавычках в настройке db_table :

db_tablespace ¶

default_related_name ¶

get_latest_by ¶

managed ¶

Если модель с managed=False содержит ManyToManyField на другую неуправляемую модель, промежуточная таблица для хранения связи многое-ко-многим не будет создана. Однако, промежуточная таблица между управляемой и не управляемой моделью будет создана.

Правильное создание таблиц при тестировании в тестовой базе данных для модели с managed=False ложится на ваши плечи.

order_with_respect_to ¶

Для определения порядка объектов Answer передайте список первичных ключей в метод set_answer_order :

order_with_respect_to неявно использует ordering

ordering ¶

Сортировка по умолчанию используемая при получении объектов:

Это кортеж или список строк. Каждая строка это название поля с необязательным префиксом “-”, который указывает на нисходящую сортировку. Поля без “-” будут отсортированы по возрастанию. Используйте ”?” для случайной сортировке.

Например, для сортировки по возрастанию по полю pub_date :

Нисходящая сортировка по полю pub_date :

Сортировка не бесплатная операция. Каждое поле влияет на скорость выполнения запроса. Каждый внешний ключ добавит сортировку по умолчанию связанной модели.

permissions ¶

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

default_permissions ¶

proxy ¶

required_db_features ¶

required_db_vendor ¶

select_on_save ¶

unique_together ¶

Множество полей, комбинация значений которых должна быть уникальна:

Кортеж кортежей полей, которые должны быть вместе уникальны. Используется в интерфейсе администратора для проверки данных и на уровне базы данных (то есть соответствующее определение UNIQUE будет добавлено в CREATE TABLE запрос).

Для удобства unique_together может быть одноуровневым списком, если определяется один набор уникальных полей:

index_together ¶

Множество полей, для которых создается один индекс:

Для удобства index_together может быть одноуровневым списком, если определяется один набор полей:

verbose_name ¶

Читабельное название модели, в единственном числе:

verbose_name_plural ¶

Название модели в множественном числе:

Источник

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

класс Мета в Django

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

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

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

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

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

Эта опция используется для определения удобочитаемого единственного имени модели и заменяет стандартное соглашение об именах Django. Это имя также отобразится в панели администратора ( /admin/ ).

Этот параметр используется для определения удобочитаемого имени во множественном числе для модели, которое снова перезапишет стандартное соглашение об именах Django. Это имя также отобразится в панели администратора ( /admin/ ).

Источник

Сказочный портал