В отображении Django, как получить полный счет выбора поля - PullRequest
1 голос
/ 02 октября 2019

Мне нужен счет моего (Тип бронирования) У меня есть 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 Ответ

0 голосов
/ 02 октября 2019

Но почему код не сможет дать мне счет сертификата.

Поскольку это число равно нулю, а база данных работает в предположении для закрытого мира ,Таким образом, он не знает, что эти значения существуют.

Возможно, вам нужно добавить .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>
...