我有这个模型:
class Rank(models.Model):
RANK_TYPE_CHOICES = (
('O', 'Officer'),
('E', 'Enlisted'),
('V', 'Civilian'),
('C', 'Cadet'),
)
ShortName = models.CharField(max_length=50)
LongName = models.CharField(max_length=500)
Type = models.CharField(max_length=1, choices=RANK_TYPE_CHOICES, default='O')
Genre = models.ForeignKey(Genre, on_delete=models.DO_NOTHING)
Career = models.ForeignKey(Career, on_delete=models.DO_NOTHING)
image = models.ForeignKey(Photos, on_delete=models.DO_NOTHING)
当我执行此ORM操作时:
models.Rank.objects.values('Type').annotate(total=Count('Type')).order_by()
我得到这个回应
<QuerySet [{'Type': 'O', 'total': 1}]>
正是我想要的。 但是,如您所见,它给了我简短的类型。如何显示长名称而不是类型选择短名称?
谢谢。
答案 0 :(得分:1)
您将需要手动添加值。
rank_dict = dict(RANK_TYPE_CHOICES)
for obj in my_ranks:
obj['full_type'] = rank_dict[obj['Type']]