annotate для отсутствующего ключа группировки

Есть модели:

class Deviation(models.Model):
    class DeviationType(models.TextChoices):
        TYPE1 = 'type1',
        TYPE2 = 'type2'
        COMMON = 'common'
        
    type = models.CharField(
        _('deviation type'),
        choices=DeviationType.choices,
        max_length=25,
        default=DeviationType.COMMON,
    )


class Task(models.Model):
    name = models.CharField()
    deviation = models.ForeignKey(Deviation)

Есть ORM-запрос:

res = Task.objects.values('deviation__type')\
     .annotate(type=F('deviation__type'), count=Count('pk'))\
     .values('type', 'count')

Из запроса можно видеть, что цель запроса - посчитать количество Task, сгруппировав по deviation__type.

С чем заключается вопрос. Можно догадаться, что если нет ни одной Task-и с каким-то определенным type, скажем, COMMON, то в res его и не будет, то есть:

[
    {
        "type": "type1",
        "count": 9
    },
    {
        "type": "type2",
        "count": 10
    }
]

Можно ли переделать ORM-запрос так, чтобы вместо отсутствия подобных type в результате, они там были, а count был бы 0:

[
    {
        "type": "losses",
        "count": 9
    },
    {
        "type": "personnel",
        "count": 10
    },
    {
        "type": "common",
        "count": 0
    }
]

?


Ответы (0 шт):