【问题标题】:In django mapping how to get complete count of choice filed在 django 映射中如何获得完整的选择字段计数
【发布时间】: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}

我也更改了要过滤的值,但是没有任何效果。

【问题讨论】:

  • 什么不起作用?
  • 证书计数在哪里

标签: python django flask orm


【解决方案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)

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 2011-05-22
    • 2021-04-26
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多