Как свернуть несколько строк, отфильтрованных по значению столбца, в одну строку в Django?

У меня есть модель для уведомления:

class Notification(models.Model):
    class VerbChoices(models.TextChoices):
        COMMENTED = 'commented'
        LIKE = 'like'

    id = models.CharField(primary_key=True, default=generate_id, max_length=255)
    actor = models.ForeignKey(Users, on_delete=models.DO_NOTHING, related_name='notify_actions', null=True)
    recipient = models.ForeignKey(Users, on_delete=models.DO_NOTHING, related_name='notifications')
    verb = models.CharField(max_length=255, choices=VerbChoices.choices)
    read = models.BooleanField(default=False)
    target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    target_object_id = models.CharField(max_length=255)
    target = GenericForeignKey('target_content_type', 'target_object_id')
    created_at = models.DateTimeField(auto_now_add=True)
    last_updated = models.DateTimeField(auto_now=True)

Я пытаюсь написать запрос, который вернет количество строк с verb = LIKE, сгруппированных по target_object_id. Все остальные строки должны быть без группировки по

Любая помощь в этом вопросе будет очень признательна.

Вы можете попробовать этот вариант

Notifications.objects.all().annotate(target_objects=Count('authors'))

Вернуться на верх