在Django中注释一个values()查询

5

我的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时遇到了困难。是否有一种方法可以在不进行后处理的情况下完成此操作?


太好了!谢谢Shang,我没有搜索“rename”,只搜索了“annotate”。答案是使用django.db.models.F - Escher
1个回答

5

参考 Shang 的建议(已测试并可行):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接