在 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 ForeignKey?

如何在不完整的 Django 表单字段中获取用户输入?

如何将我在视图中获得的一些信息保存到模型中的一个字段中 - django

如果在Django中获得带有空字段的参数,如何不将空参数保存在表中

Django ForeignKey不需要参照完整性?