python - Django:聚合查询集结果的更好方法
问题描述
我有以下代码片段。我首先尝试直接获取男性/女性的计数作为注释,但我没有设法得到这些。因此,我编写了以下 for 循环。但是,它仍然觉得这个解决方案没有想象中的那么好。您还有其他想法如何在这里编写更好的代码吗?
genders = self.get_answers(self.get_super_guests(), QuestionFocus.GENDER)
# >>> <QuerySet [Answer: Male, Answer: Female, Answer: Male]>
male = female = 0
for gender in genders:
if gender.answer == "Male":
male += 1
elif gender.answer == "Female":
female += 1
print("Gender distribution is Male", male, "Female: ", female)
解决方案
您可以使用项目数注释查询集的值,例如:
result = genders.values('answer').annotate(
number=Count('answer')
).order_by('answer')
这将导致QuerySet
如下所示:
<QuerySet [
{ 'answer': 'Male', 'number': 14},
{ 'answer': 'Female', 'number': 25}
]>
推荐阅读
- c# - 在windows窗体c#中拖放操作期间将光标保持在默认形状
- asp.net-core - .Net Core 2.2 Health Checks UI 给出空白页
- java - SWT Combo 防止 shift + 9 事件
- html - 如何在 div 中制作一半文本,在 CSS 中制作另一半文本?
- java - Tomcat HTTP Base 身份验证和 JAX-WS:客户端生成失败
- javascript - 使用 Jest & Enzyme 在 React 中测试父组件的道具功能
- c# - 如何在 ASP.NET CORE 3.0 中配置路由以使用带有 [FromQuery] 参数的重载 [HttpGet] 方法?
- ssis - SSIS - 如何使用执行 SQL 任务的结果来调用 Web 服务
- python - 当我在盒子上按 onclick() 时出现硒问题
- snowflake-cloud-data-platform - 如何应对大数据文件格式和外部表中区分大小写的列名?