简体   繁体   English

Django foo_display的值()

[英]Django foo_display with values()

Lets say I have a django Model shown below 可以说我有一个如下所示的django模型

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

status field will only have values 1,2. status字段只有值1,2。 Is there some way I can replace 1,2 with their corresponding display values say (pass,fail) every time i use them in values() method without iterating further over the queryset. 有没有什么方法可以用每个我在values()方法中使用它们的相应显示值(通过,失败)来替换1,2,而不会在查询集上进一步迭代。 eg: 例如:

something like this 这样的事情

Student.objects.values(staus_display_value)

so that this returns a value queryset with display values instead of db values 这样它返回一个带有显示值而不是db值的值查询集

[{"name":"jane","status":"pass"},
{"name":"john","status":"fail"}] 

I know that Model.get_FOO_display() can be used to get display values for individual objects. 我知道Model.get_FOO_display()可用于获取单个对象的显示值。

Try this 试试这个

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'

Yes, you can do the following in your model: 是的,您可以在模型中执行以下操作:

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)

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM