我正在尝试获取aggregate
及其id
。
我有一个名为Index
的模型。
class Index(Model):
correlation = DecimalField()
company = CharField()
------------------------------
| id | correlation | company |
------------------------------
| 1 | 0.99 | A |
| 2 | 0.43 | A |
| 3 | 0.67 | B |
| 4 | 0.94 | B |
| 5 | 0.23 | C |
------------------------------
我需要查询才能返回
[
{
'id': 1,
'correlation': 0.99,
'company': 'A'
},
{
'id': 4,
'correlation': 0.94,
'company': 'B'
},
{
'id': 5,
'correlation': 0.23,
'company': 'C'
}
]
说明:由于公司A
的ID为0.99
的最大相关性为1
,因此将其返回。
因此,基本上我需要为所有公司检索最大关联的id
。
我尝试了
Index.objects.values('company').annotate(correlation_max = Max('correlation'))
。
Index.objects.values('company', 'id').annotate(correlation_max = Max('correlation'))
。
他们都没有工作。我无法获取id
。
我检查了this。但我也需要id
。
答案 0 :(得分:2)
您可以选择所有具有相同YOUR_TOKEN_HERE
的项目,将company
降序排列,然后选择第一个(相关性最高):
correlation
不太优雅,我敢肯定必须有一种更优雅的方法,但是我已经对此进行了测试,并且效果很好。