0

假设我有以下内容:

模型.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)

管理员.py:

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

当我尝试ModelA在管理站点中显示我的列表时,它会显示0or1而不是ZEROor ONE

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

4

1 回答 1

1

文档和领域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()
于 2016-05-16T00:49:54.917 回答