在Django中注释values()查询

时间:2016-04-13 20:14:41

标签: django annotate

我的RelatedModel有一个指向Product对象的外键字段。我正在尝试计算每RelatedModel个UUID Product的数量。

RelatedModel.objects.all().values(fk_product__uuid).annotate(total=Count('id'))

这给了我:

[
{'total': 3, 'fk_product__uuid': UUID('195b6aa8-6a57-62c6-89d1-3397bf69d928')},
{'total': 7, 'fk_product__uuid': UUID('2a6a6a98-1a17-4cca-8111-2212b951003a')},
...
]

我更喜欢我的UUID键只是被称为“uuid”,但我很难让annotate处理反向关系。有没有办法在没有对列表进行后处理的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

按照Shang的建议(测试和工作)参考:

q = Product_r.objects.all().annotate(uuid=F('fk_product__uuid')).values('uuid').annotate(total=Count('id')).order_by('total')