python - 如何在 django 中计算每天的女性和男性人数(分组)
问题描述
我正在尝试按日期分组并计算字段数(choice field : male and female
)
这是我试过的
genders = (
(male , _('male')),
(female , _('female')),
)
class MyModel(models.Model):
gender = models.CharField(max_length=10,choices=genders,default=male)
created_at = models.DateTimeField(auto_now_add=True)
#others
我的意见.py
male= Q(gender='male')
female= Q(gender='female')
lists = MyModel.objects.annotate(day=TruncDay('created_at')).values('day').annotate(qnt=Count('id'),male=Count(male),female=Count(female)
).order_by('-day')
我希望返回这样的东西:
day : 1-8-2021 , qnt: 15 , male : 8 , female : 7
qnt
但它返回男性和女性的总量!请问有更好的方法来实现吗?
解决方案
您可以使用以下方法过滤计数:
data = MyModel.objects.values(
day=TruncDay('created_at')
).annotate(
qnt=Count('pk'),
male=Count('pk', filter=Q(gender='male')),
female=Count('pk', filter=Q(gender='female'))
).order_by('-day')
推荐阅读
- flutter - 卡片内容器的边框半径
- sql - 如何计算呈现 Django 管理页面所需的 SQL 查询数?
- react-native - React-Native init 在安装所需的 cocoapods 时卡住了
- vue.js - 在插件 vue 中使用 mixins
- matlab - 下限和上限有限指数增长
- python-3.x - How to split a csv line that has commas for formatting numbers
- laravel - 分页不考虑结果的变化
- oracle - 创建一个可变数组
- python - 类对象不更新空列表
- google-maps - Gmaps 不适用于 Jupyter Labs - 错误:没有提供程序:jupyter.extensions.jupyterWidgetRegistry