• Перечисления (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']).

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰