在 Django 中注释 values() 查询
Posted
技术标签:
【中文标题】在 Django 中注释 values() 查询【英文标题】:Annotate a values() query in Django [duplicate] 【发布时间】:2016-08-05 03:44:51 【问题描述】:我的RelatedModel
有一个指向Product
对象的外键字段。我正在尝试计算每个Product
UUID 的RelatedModel
s 数量。
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
处理反向关系。有没有办法在不对列表进行后处理的情况下做到这一点?
【问题讨论】:
哦,太好了!谢谢尚,我没有搜索“重命名”,只是“注释”。答案是使用django.db.models.F
【参考方案1】:
参考尚的建议(测试和工作):
q = Product_r.objects.all().annotate(uuid=F('fk_product__uuid')).values('uuid').annotate(total=Count('id')).order_by('total')
【讨论】:
以上是关于在 Django 中注释 values() 查询的主要内容,如果未能解决你的问题,请参考以下文章