使用这样定义的模型:
class Athlete(models.Model):
name = models.CharField()
class Event(models.Model):
winner = models.ForeignKey(Athlete)
distance = models.FloatField()
type_choices = [('LJ', 'Long Jump'), ('HJ', 'High Jump')]
type = models.CharField(choices=type_choices)
我想运行一个查询,找出所有Athlete
赢得的事件,按类型分组。我目前正在这样做:
athlete = Athlete.objects.get(name='dave')
events_by_type = Events.objects.values('type').annotate(Count('winner')).filter(winner=athlete)
这给了我一个事件类型的字典(短版本)和运动员获胜的次数。然而,这就是它给我的全部。如果我想深入研究其中一个事件以找到距离甚至只是详细的类型名称,我做不到。
我是否以正确的方式解决这个问题?我怎样才能对事件进行分组,而且还可以访问它们的所有字段?