使用枚举作为选项获取选项显示值

2024-04-12

我有一个 Django 模型,其中使用了 options 参数。对于选择,我使用 Python 枚举。现在我想在模板中显示选择显示值。我知道有.get_fieldname_display但在这种情况下它只返回键而不是显示值。

Model:

class LocalTitle(models.Model):
    type = models.CharField(max_length=8, choices=[(tag, tag.value) for tag in LocalTitleCodes])
    title = models.CharField(max_length=255)

Enum:

class LocalTitleCodes(Enum):
     title_00 = 'Japanese'
     title_01 = 'English'
     title_02 = 'French'

所以就我而言,如果我这样做title.get_type_display在我的模板中它返回title_00并不是Japanese。如何获取显示值?


我认为问题更在于tag does not map to title__00,但是对于一个LocalTitleCodes object.

你应该使用:

class LocalTitle(models.Model):
    type = models.CharField(
        max_length=8,
        choices=[(tag.name, tag.value) for tag in LocalTitleCodes]
    )
    title = models.CharField(max_length=255)

由于 Django 无法找到相应的值,因此它会使用数据库中存储的值。

Since:

>>> [(tag, tag.value) for tag in LocalTitleCodes]
[(<LocalTitleCodes.title_00: 'Japanese'>, 'Japanese'), (<LocalTitleCodes.title_01: 'English'>, 'English'), (<LocalTitleCodes.title_02: 'French'>, 'French')]
>>> [(tag.name, tag.value) for tag in LocalTitleCodes]
[('title_00', 'Japanese'), ('title_01', 'English'), ('title_02', 'French')]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用枚举作为选项获取选项显示值 的相关文章

随机推荐