Python - 将枚举转换为 Django 模型。CharField 选择元组 [重复]

Posted

技术标签:

【中文标题】Python - 将枚举转换为 Django 模型。CharField 选择元组 [重复]【英文标题】:Python - Covert enum to Django models.CharField choices tuple [duplicate] 【发布时间】: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),
)

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

【问题讨论】:

【参考方案1】:

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

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

    animal = models.CharField(choices=Animal.choices)

【讨论】:

谢谢!它就像一个枚举?意思是我可以在外面使用它:Animal.DOG?

以上是关于Python - 将枚举转换为 Django 模型。CharField 选择元组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Django/Python:如何将整数转换为等效的枚举字符串? [复制]

python Django:将模型实例转换为字典

如何将 django 表单输入转换为 python 数据?

python django -2

使用 django 将 Python 正则表达式转换为路径时遇到问题

如何在Django中基于枚举为模型字段设置默认值?