Но почему код не сможет дать мне счет сертификата.
Поскольку это число равно нулю, а база данных работает в предположении для закрытого мира ,Таким образом, он не знает, что эти значения существуют.
Возможно, вам нужно добавить .order_by(..)
, чтобы заставить Django выполнить GROUP BY
. Кроме того, мы можем использовать choices
для добавления нулей к этим элементам:
d1 = Booking.objects.values('booking_type').annotate(
booking_count=Count('booking_type')
)<b>.order_by('booking_type')</b>
result = {f['booking_type']: f['booking_count'] for f in d1}
for c in Booking._meta.get_field('booking_type').choices:
result.<b>setdefault(c[0], 0)</b>