unique_together
Опция unique_together в Meta классе модели Django позволяет указать набор полей, которые должны быть уникальными вместе. Это означает, что никакие два экземпляра вашей модели не могут иметь одинаковые значения в полях, указанных в файлах unique_together.
В Django вы можете указать уникальные поля вместе, предоставив список кортежей имен полей в опции unique_together. Каждый кортеж представляет набор полей, которые вместе должны быть уникальными.
Вот пример использования unique_together опции:
class MyModel(models.Model):
name = models.CharField(max_length=100)
date = models.DateField()
class Meta:
unique_together = [
['name', 'date'],
]
В этом примере модель MyModel имеет два поля name и date. Параметр unique_together установлен в список с одним кортежем, который определяет набор полей, которые должны быть уникальными вместе. Это означает, что никакие два экземпляра не MyModel могут иметь одинаковые значения name и date.
index_together
Опция index_together в Meta классе модели Django позволяет указать набор полей, для которых должен быть создан индекс базы данных. Индекс — это структура оптимизации базы данных, которая позволяет быстрее извлекать данные.
В Django вы можете указать поля, которые должны быть проиндексированы вместе, предоставив список кортежей имен полей в опции index_together. Каждый кортеж представляет собой набор полей, которые должны индексироваться вместе.
Вот пример использования index_together опции:
class MyModel(models.Model):
name = models.CharField(max_length=100)
date = models.DateField()
class Meta:
index_together = [
['name', 'date'],
]
В этом примере модель MyModel имеет два поля name и date. Параметр index_together установлен в список с одним кортежем, который определяет набор полей, которые должны быть проиндексированы вместе c name Это означает, что для полей и будет создан единый индекс базы данных date, что позволит быстрее извлекать данные при поиске записей с конкретными значениями name и date.
constraints
Параметр constraints в Meta классе модели Django позволяет указать ограничения, которые должны применяться к полям в модели. Ограничения в Django гарантируют выполнение определенных условий для данных, хранящихся в базе данных.
Вы можете указать ограничения, предоставив список экземпляров django.db.models.CheckConstraint в constraints опции. Каждый экземпляр определяет одно ограничение.
Вот пример использования constraints опции:
from django.db import models
from django.core.exceptions import ValidationError
class MyModel(models.Model):
name = models.CharField(max_length=100)
value = models.IntegerField()
class Meta:
constraints = [
models.CheckConstraint(check=models.Q(value__gt=0), name='value_positive'),
]
В этом примере модель MyModel имеет два поля name и value. Параметр constraints установлен в список с одним экземпляром CheckConstraint, который определяет ограничение, которое value должно быть больше 0. Это ограничение будет применяться к полю value в базе данных, и любая попытка сохранить запись с отрицательным value результатом приведет к ошибке ValidationError.
verbose_name
Параметр verbose_name в Meta классе модели Django позволяет указать удобочитаемое имя модели, которое используется в различных местах фреймворка Django, например, в административном интерфейсе или в сообщениях об ошибках. По умолчанию подробное имя модели представляет собой версию имени модели, написанную с заглавной буквы.
Вот пример использования verbose_name опции:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
class Meta:
verbose_name = 'My Book'
В этом примере модель Book имеет три поля: title, author, и publication_date. Для параметра verbose_name установлено значение 'My Book', которое будет использоваться в качестве удобочитаемого имени модели в различных местах фреймворка Django. Например, если вы используете интерфейс администрирования Django, вы увидите My Book имя модели вместо Book.
verbose_name_plural
Параметр verbose_name_plural в классе модели Django Meta используется для указания формы множественного числа удобочитаемого имени модели. Это имя используется в различных местах среды Django, например, в административном интерфейсе или в сообщениях об ошибках.
Вот пример использования verbose_name_plural опции:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
class Meta:
verbose_name = 'My Book'
verbose_name_plural = 'My Books'
В этом примере модель Book имеет три поля: title, author и publication_date. Параметр verbose_name установлен на 'My Book', а verbose_name_plural параметр установлен на 'My Books'. Эти имена будут использоваться в качестве удобочитаемых имен для модели и ее экземпляров в различных местах фреймворка Django. Например, если вы используете интерфейс администрирования Django, вы увидите My Books имя коллекции экземпляров модели Book, а не Books.
readonly_fields
В Django Meta класс используется для указания дополнительных параметров модели Django. Атрибут readonly_fields класса Meta — это список полей, которые должны отображаться только для чтения в административном интерфейсе Django. Эти поля нельзя редактировать непосредственно в интерфейсе администратора.
Например:
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
class Meta:
readonly_fields = ['publication_date']
В этом примере publication_date поле будет отображаться как доступное только для чтения в административном интерфейсе Django, что означает, что его нельзя редактировать напрямую.