[英]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.