【问题标题】:Annotate a values() query in Django [duplicate]在 Django 中注释 values() 查询
【发布时间】:2016-08-05 03:44:51
【问题描述】:

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

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

标签: django annotate


【解决方案1】:

参考尚的建议(测试和工作):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2020-01-18
    • 1970-01-01
    • 2013-08-28
    • 2019-10-13
    • 2020-07-04
    • 2020-09-01
    相关资源
    最近更新 更多