在 django 映射中如何获得完整的选择字段计数
Posted
技术标签:
【中文标题】在 django 映射中如何获得完整的选择字段计数【英文标题】:In django mapping how to get complete count of choice filed 【发布时间】:2019-10-02 17:27:20 【问题描述】:我想要我的(预订类型)的计数我有 3 种类型的选择(模型中的选择字段)个人、团体和证书。
d1 = Booking.objects.values('booking_type').annotate(booking_count=Count('booking_type'))
f.get('booking_type'): f.get('booking_count') for f in d1
下面是上面的输出:但是为什么代码没有给我证书计数
'GROUP': 2, 'INDIVIDUAL': 3
我也更改了要过滤的值,但是没有任何效果。
【问题讨论】:
什么不起作用? 证书计数在哪里 【参考方案1】:但是为什么代码不能给我证书计数。
因为该计数为零,并且数据库在封闭世界假设下工作。因此它不知道这些值的存在。
您可能需要添加.order_by(..)
来强制Django 执行GROUP BY
。此外,我们可以使用choices
为这些项目添加零:
d1 = Booking.objects.values('booking_type').annotate(
booking_count=Count('booking_type')
).order_by('booking_type')
result = f['booking_type']: f['booking_count'] for f in d1
for c in Booking._meta.get_field('booking_type').choices:
result.setdefault(c[0], 0)
【讨论】:
以上是关于在 django 映射中如何获得完整的选择字段计数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中获取服务器名称以获得完整的 url?
如何将我在视图中获得的一些信息保存到模型中的一个字段中 - django