Django中使用values()函数的foo_display方法

4
假设我有一个 Django 模型,如下所示:
 Class Student(models.Model):
     name=models.CharField(max_length=100);
     status=models.IntegerField()

状态字段只能有值1和2。我是否可以在使用values()方法时自动将1和2替换为它们对应的显示值(例如"pass"和"fail"),而无需进一步迭代查询集。

类似这样的操作:

Student.objects.values(staus_display_value)

以便返回一个带有显示值而非数据库值的查询集

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

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


你可以使用这种方法:https://dev59.com/Z0vSa4cB1Zd3GeqPhtdF#2224964,并且抽象出在查询集中不使用数字...如果这并没有帮助到你,那么请编辑你的问题,因为不清楚你想要什么,也许添加一个你遇到问题的查询集。 - madzohan
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - kmmbvnr
2个回答

2

试试这个

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'

1
这个单一对象的代码很有效。请查看我的问题编辑。 - jithin

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)

希望这能有所帮助。

1
如何将这些标签包含在values()方法中? - jithin
不需要调用这些值,因为默认显示值将是“通过”或“失败”。 - Navneet
显示的值将是“通过”/“失败”,但保存在数据库中的值将是“1”/“2”,即取决于选择。 - Navneet
抱歉,我没听懂你的意思。我是在说如何在值查询集中获取显示值。 - jithin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接