簡體   English   中英

在 django 映射中如何獲得完整的選擇計數

[英]In django mapping how to get complete count of choice filed

我想要我的(預訂類型)的計數我有 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}

下面是上面的 output: 但是為什么代碼沒有給我證書的計數

{'GROUP': 2, 'INDIVIDUAL': 3}

我也將值更改為過濾器,但是沒有任何效果。

但是為什么代碼不能給我證書計數。

因為該計數為零,並且由於數據庫在封閉世界假設下工作。 因此它不知道這些值的存在。

您可能需要添加.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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM