【问题标题】:Python - Covert enum to Django models.CharField choices tuple [duplicate]Python - 将枚举转换为 Django 模型。CharField 选择元组 [重复]
【发布时间】:2020-07-07 05:05:22
【问题描述】:

我有这个枚举:

class Animal(Enum):
  DOG = 'dog'
  CAT = 'cat'

在 Django 模型中我有这个:

possible_animals = (
  ("DOG", "dog"),
  ("cat", "cat"),
)
animal = models.CharField(choices=possible_animals, ...)

我知道我可以像这样使用枚举:

possible_animals = (
  (Animal.DOG.name, Animal.DOG.value),
  (Animal.CAT.name, Animal.CAT.value),
)

但是还有其他优雅的动态方式可以将枚举转换为这种嵌套元组吗?

【问题讨论】:

    标签: python django enums


    【解决方案1】:

    通过继承 models.TextChoices 来创建枚举类

    class AnimalModel(models.Model):
        class Animal(models.TextChoices):
            DOG = 'dog'
            CAT = 'cat'
    
        animal = models.CharField(choices=Animal.choices)

    【讨论】:

    • 谢谢!它就像一个枚举?意思是我可以在外面使用它:Animal.DOG?
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 2013-06-11
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2012-12-07
    相关资源
    最近更新 更多