对于有选择的 Charfield,如何通过外键使用 list_display 中的人类可读名称?

For a Charfield with choices, how to use the human readable name in list_display through a foreignkey?

假设我有以下内容:

models.py :

VALUE_CHOICES = (('0', 'ZERO'),
                 ('1', 'ONE'))

class ModelA(models.Model):
    def val(self):
        return self.model_b.value or ''

class ModelB(models.Model):
    modela = models.OneToOneField(ModelA, related_name="model_b", null=False)
    value = models.CharField(choices = VALUE_CHOICES)

admin.py :

class ModelAAdmin(ModelAdmin):
    list_display = ['val']

当我尝试在管理站点中显示我的 ModelA 列表时,它显示 01 而不是 ZEROONE

我如何修改它以使其在管理站点的列表中显示来自 VALUE_CHOICES 的人类可读名称?

来自 docs,并且对于字段 val

class ModelAAdmin(ModelAdmin):
    list_display = ['get_val_display']

这应该可以完成工作。

[OP 编辑​​] 我没有成功让它像这样工作,但这种方法是一个非常好的建议。下面是我如何使用这种 get_FOO_display() 方法(而且效果很好)。

我只修改了我的ModelA.val()方法:

def val(self):
    return self.model_b.get_value_display()