django - 带有 Case 的 Django QuerySet 注释似乎是误报
问题描述
我正在尝试逐个注释 QuerySet,但我得到的所有结果都是正面的 (1),而它们应该都是负面的 (0)。
过滤器看起来像这样
related_params[distro.id] = table.objects.filter(
ProductId__in=[map["ProductId"] for map in related_maps_by_distro.values("ProductId")]).annotate(
has_agr_param=Count(
models.Case(
models.When(DistributionParameterId__Code__in=[agr_parameter.Code for agr_parameter in agr_parameters], then=1),
default=0,
output_field=models.IntegerField(),
)
)
).order_by("DistributionParameterId__Name")
除了部分之外,一切都很好annotate
。
的值[agr_parameter.Code for agr_parameter in agr_parameters]
是
['ZARIZENI', '443', '10071', 'PC4.12', 'PC4.121', 'PC4.6', 'PC3.101', 'AIO 2.1']
而所有可能DistributionParameterId__Code
的 s 是
['10176', '10175', '10171', '10177', '563', '10172', '10179', '829', '10174', '10173', '10170', '10178']
所以只有一个匹配 - 10071
- 因此除了一个之外的所有都应该用 0 注释。我错过了什么?任何帮助,将不胜感激。
解决方案
推荐阅读
- c# - ASP.Net MVC 应用程序默认为 TLS 1.0
- elasticsearch - Elasticsearch Curator - 删除除最新以外的索引
- mysql - Dockerfile 中的入口点
- maven - 尽管在 Spring Cloud doc 中有这样的描述,但我不能为我的项目的父版本使用属性
- execution - Windows7 上的 Python 2.7 项目目录设置
- ios - iOS SwiftUI 搜索栏和 REST-API
- powershell - 在powershell for循环中打印字符串和变量
- sql-server - 减少 SQL 日志文件大小的正确过程
- java - Feign校验体不为空
- c++ - C++:在 CMake 中禁用旧式强制转换警告