python - 如何在 charts.js 的查询集中排除空值

标签 python django filtering exclude-constraint

我正在尝试获取已登录用户在市场上的侵权次数。 登录的用户是组的一部分。我遇到的问题是它仍在计算不属于该组的市场项目的值(value)。它在查询集中添加了 0,打破了我的图表,

u = request.user.groups.all()[0].id  
mar_count =  Marketplace.objects.annotate(infringement_count=Count('infringement', filter=Q(groups=u)))

结果 'Ebay','Amazon','Facebook','Wallmart', '0','0','0','0','1','1','1','1',

我应该得到 'Ebay','Amazon','Facebook','Wallmart', '1','1','1','1',

当市场不属于已登录用户组时,我如何排除对市场的计数?我是新的。谢谢

最佳答案

您可以过滤掉 Marketplace,因此不在 .annotate(..) clause [Django-doc] 中:

u = request.user.groups.all()[0].id
mar_count = Marketplace.objects.filter(groups=u).annotate(
    infringement_count=Count('infringement')
)

计数将始终为一(如果 ingrigmentNone,则为零)。

您的代码片段的一个问题是它总是只适用于该用户的第一个 组,并且可以是该用户所属的任何组,因此它不是很一致。如果你想计算 user 所属的所有组,你可以使用:

mar_count = Marketplace.objects.filter(groups__user=request.user).annotate(
    infringement_count=Count('infringement')
)

这里的计数将始终是“匹配”组的数量,如果 infrigmentNULL,则为 0

关于python - 如何在 charts.js 的查询集中排除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74424645/

相关文章:

jquery - XSLT 用于使用 javascript 过滤 XML 文档

python - 使用字典作为键划分两个 Pandas DataFrame

python - 错误系统调用spawn C :\Windows\system32\cmd. exe

python - "getaddrinfo() argument 1 must be string or None"在 Linux 上启动 dev_appserver.py 时出错

python - 如何使用 asyncio 在 python3 中运行并行作业?

python - 如何只包含一次js和css

python - 如何在 Django 请求之间在内存中保留共享数据结构

django - 使用 "i18n_pattern"在 URL 中显示语言前缀后无法设置语言

javascript - 如何链接复选框(:checked) to a class?

list - 在 MATLAB 元胞数组中查找和过滤元素