我有个问题要问.

packages = Package.objects.annotate(bid_count=Count('items__bids'))

它应该会给我一份包裹 list ,每个包裹的出价都是多少.如果包裹里只有一件东西,它就很好用,但如果有更多的东西,它就会加倍算数.

每个包裹由1个或多个项目组成.每次出价都是在一个包裹内的一个或多个项目上进行的.我想检索该包裹内物品的出价数量.

如果在一个包内有2个项目有1个出价,目前这将算作2,我希望它返回1.

我试了Count('items__bids__distinct')次,但没用.我该怎么做?

推荐答案

我也有同样的问题,我找到了解决办法:

packages = Package.objects.annotate(bid_count=Count('items__bids', distinct = True))

Django相关问答推荐

Django Model邮箱字段是必需的,即使在我将其设置为NULL=True和BLACK=True之后也是如此

Django-无法显示基于字段值的元素

Django查询一个查询集的输入结果,以查找没有出现在另一个模型中的对象

Django REST序列化程序TO_REATION失败

通过在其他查询中使用来过滤对象

Django 中模型将数据存储在哪里?

错误``Forbidden (403) CSRF 验证失败.请求中止.``` 当try 登录管理员时

Django 模型:如何查找自动生成的字段列表

使用 Django 一次更新多条记录

如何在 Django 中返回静态 HTML 文件作为响应?

Django中视图的多个decorator :执行顺序

django 有条件地过滤对象

将 jQuery 脚本添加到 Django 管理界面

Django:在还原(迁移)后try 访问数据库时权限被拒绝

Django - 安装 mysqlclient 错误:需要 mysqlclient 1.3.13 或更高版本;你有 0.9.3

Django:根据自定义函数过滤查询

Django:按位置排序,忽略 NULL

Django 中的自定义 HTTP 标头

Django Debug Toolbar:了解时间面板( time panel)

django.urls.path中name参数的作用是什么?