首页 > 解决方案 > 如何在 __str__ 方法中获取 TextChoice 枚举值

问题描述

这就是我尝试在models.py

from django.db import models

class Country(models.Model):
    class Countries(models.TextChoices):
        US = 'US', 'United States'
        EP = 'EP', 'Europe'
        IND = 'IN', 'India'

    name = models.CharField(max_length=2,
                        choices=Countries.choices,
                        blank=True)

    def __str__(self):
        return getattr(self.Countries, self.name)

str调用只给出两个字母的国家代码。我如何获得完整的信息,例如US (United states)US, United States

当我手动添加国家时,admin它会显示全名。它必须以某种方式得到它。

标签: pythondjangodjango-models

解决方案


使用get_FOO_display()(Django Doc)方法

class Country(models.Model):
    # other fields
    def __str__(self):
        return "{value} ({display_value})".format(value=self.name, display_value=self.get_name_display())

推荐阅读