在 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')
我的 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')