在 Django 中注释 values() 查询

Annotate a values() query in Django

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

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 处理反向关系。有没有办法在不 post- 处理列表的情况下做到这一点?

参考尚的建议(已测试并有效):

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