我有 2 个模型:
class FaultType(models.Model):
name = models.CharField(max_length=255, blank=False, default='')
visible = models.BooleanField(default=True)
和
class RunFault(models.Model):
run = models.ForeignKey(Run, on_delete=models.CASCADE)
fault_type = models.ForeignKey(FaultType, on_delete=models.CASCADE)
note = models.CharField(max_length=100, blank=True, default='')
我需要按 FaultType 对 RunFault 的所有实例进行分组,并对它们进行计数。
最好得到一个dict
带有结构的(例子):
faults = {
"some_fault" = 7,
"foo_fault" = 4,
"bar_fault" = 13
}
(其中“blabla_fault”是 FaultType.name)
基本上我需要dict
key 是 the FaultType.name
, value 是 count 。
现在我正在像这样查询数据库:
faults = RunFault.objects.values('fault_type__name').order_by('fault_type').annotate(count=Count('fault_type__name'))
但这会返回一个像这样list
的:dicts
faults = [
{"fault_type__name": "some_fault"},
{"count": 7},
{"fault_type__name": "foo_fault"},
{"count": 4},
{"fault_type__name": "bar_fault"},
{"count": 13}
]
一个dict
有键fault_type__name
和值FaultType.name
,另一个dict
有键count
,值是实际计数。
很难像那样使用它们,因为我不知道哪个计数属于哪个FaultType
!
这是 的预期行为.annotate(count=Count('some_key'))
吗?
还是我做错了查询?