Django foo_display 与 value()

jit*_*hin 5 python django django-models django-views

假设我有一个 django 模型,如下所示

 Class Student(models.Model):
     name=models.CharField(max_length=100);
     status=models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

status 字段只有值 1,2。有什么方法可以在每次在 value() 方法中使用它们时用它们相应的显示值(通过,失败)替换 1,2 ,而无需进一步迭代查询集。例如:

像这样的东西

Student.objects.values(staus_display_value)
Run Code Online (Sandbox Code Playgroud)

这样这将返回一个带有显示值而不是数据库值的值查询集

[{"name":"jane","status":"pass"},
{"name":"john","status":"fail"}] 
Run Code Online (Sandbox Code Playgroud)

我知道 Model.get_FOO_display() 可用于获取单个对象的显示值。

Nav*_*eet 0

是的,您可以在模型中执行以下操作:

Class Student(models.Model):
    X_CHOICES = (
            (u'1', u'Pass'),
            (u'2', u'Fail'),
        )
    name=models.CharField(max_length=100);
    status = models.IntegerField(default=1,choices=X_CHOICES)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。