Django: Как использовать OuterRef() для .get() в аннотации?

Я использую django-treebeard и использую модель, которая позволяет рекурсивные отношения.

Итак, мне нужно подсчитать количество моих потомков, используя .annotate(), но Чтобы получить его, нужно один раз пройти через .get(), как показано ниже.

Однако в этом случае OuterRef("pk"), похоже, не работает, и возникает следующая ошибка. This queryset contains a reference to an outer query and may only be used in a subquery.

Что я могу сделать, чтобы решить эту проблему?

class Comment(MP_Node):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    text = models.TextField( max_length=1000)
    commented_at = models.DateTimeField(default=timezone.now)
    parent = models.ForeignKey(
        "self",
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        related_name="replies",
    )
queryset.filter(post=post)
.annotate(
    reply_count=Count(
        Comment.objects.get(
            pk=OuterRef("pk")
        ).get_descendants()
    )
)
Вернуться на верх