В Django и IntegerChoices, и TextChoicesявляются классами перечисления, которые позволяют вам определить набор вариантов для определенного поля. Основное различие между ними заключается в типе данных, которые они хранят. IntegerChoicesхранит варианты выбора в виде целых чисел, а TextChoicesхранит их в виде строк.
Вот несколько методов, которые можно использовать с примерами кода:
-
Использование
IntegerChoices:from django.db import models from django.utils.translation import gettext_lazy as _ class StatusChoices(models.IntegerChoices): PENDING = 1, _('Pending') APPROVED = 2, _('Approved') REJECTED = 3, _('Rejected') class MyModel(models.Model): status = models.IntegerField(choices=StatusChoices.choices)В этом примере класс
StatusChoicesопределяет три варианта выбора для поляstatus, представленные целыми числами 1, 2 и 3.choicesиспользуется вIntegerFieldдля отображения вариантов в раскрывающемся меню. -
Использование
TextChoices:from django.db import models from django.utils.translation import gettext_lazy as _ class StatusChoices(models.TextChoices): PENDING = 'pending', _('Pending') APPROVED = 'approved', _('Approved') REJECTED = 'rejected', _('Rejected') class MyModel(models.Model): status = models.CharField(max_length=20, choices=StatusChoices.choices)В этом примере класс
StatusChoicesопределяет те же три варианта выбора, но они представлены в виде строк. Атрибутchoicesиспользуется вCharFieldдля отображения вариантов в раскрывающемся меню.