- Перечисления (
Enumeration classes
)- Способ определить поле модели с ограниченным набором значений, используя читаемые имена вместо “магических” чисел или строк.
- Используются
models.TextChoices
илиmodels.IntegerChoices
. - Преимущества: Понятный код, удобство в админке (отображаются метки), автоматическая генерация атрибутов (
.choices
,.labels
,.values
). - Пример:
# models.py from django.db import models class Post(models.Model): # Определение перечисления внутри модели class Status(models.TextChoices): DRAFT = 'DF', 'Черновик' # Значение в БД, Метка для отображения PUBLISHED = 'PB', 'Опубликовано' ARCHIVED = 'AR', 'В архиве' title = models.CharField(max_length=100) # Использование перечисления в поле status = models.CharField( max_length=2, choices=Status.choices, # Используем .choices для Django default=Status.DRAFT # Используем имя члена для значения по умолчанию ) # ... def __str__(self): return self.title
- Доступные атрибуты перечисления:
Status.values
: Список значений (['DF', 'PB', 'AR']
).Status.labels
: Список меток (['Черновик', 'Опубликовано', 'В архиве']
).Status.choices
: Список кортежей(значение, метка)
([('DF', 'Черновик'), ...]
).Status.names
: Список имен (['DRAFT', 'PUBLISHED', 'ARCHIVED']
).
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰