django ORM,如何使用values()并仍然使用choicefield?

如题,经常在django ORM会使用values(),但是如果碰到choicefield就不能用了,平时都是:
datas = Model.objects.all()
data_list = []
for data in datas:
data_dict = {
'name':data.name,
'level_name':data.get_level_display()
}
data_list.append(data_dict)

这样写损失了很多性能,有没有办法 使用values()并仍然使用choicefield。

是的,你可以在Django ORM中使用values()和choicefield。你可以使用如下代码:
datas = Model.objects.values('name', 'level')
data_list = []
for data in datas:
level_name = Model._meta.get_field('level').choices[data['level']-1][1]
data_dict = {
'name': data['name'],
'level_name': level_name
}
data_list.append(data_dict)
此代码使用了values()方法,并使用_meta.get_field()方法从模型中获取选择字段,以便获取该字段的选项。然后使用choices属性从该字段获取选项值,并通过下标从列表中选择相应的选项。
温馨提示:答案为网友推荐,仅供参考
相似回答