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

 Class Student(models.Model):
     name=models.CharField(max_length=100);
     status=models.IntegerField()

状态字段将只有值 1,2。
有什么方法可以用它们相应的显示值替换 1,2
每次我在 values() 方法中使用它们时说 (pass,fail) 而不进一步迭代查询集。
例如:

像这样的东西
Student.objects.values(staus_display_value)

这样它就会返回一个带有显示值而不是 db 值的值查询集
[{"name":"jane","status":"pass"},
{"name":"john","status":"fail"}]

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

最佳答案

试试这个

class Student(models.Model):
    X_CHOICES = (
            (1, 'Pass'),
            (2, 'Fail'),
        )
    name=models.CharField(max_length=100);
    status = models.IntegerField(default=1,choices=X_CHOICES)

>>>Student.objects.create(name="myname")
>>>s = Student.objects.get(name="myname")
>>>s.get_status_display()
'Pass'

关于python - Django foo_display 与 values(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31333128/

10-12 22:05
查看更多