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()
)
)