Как эффективно подсчитать несколько вложенных дочерних элементов в модели Django?

У меня есть следующая модель данных (бэкенд базы данных - PostGres):

class User(models.Model):
...
teams = models.ManyToManyField('Team', blank=True, related_name='all_users')
...
class Team(models.Model):
...
parent_team = models.ForeignKey('self', blank=True, null=True, related_name='child_teams')
...

Таким образом, User может принадлежать нескольким Team, а Team могут быть вложены друг в друга с разной степенью глубины.

Я хотел бы подсчитать все User в данной команде и все ее дочерние элементы, включая вложенные дочерние элементы (но исключая дубликаты). Сейчас я делаю это рекурсивно, что кажется не самым эффективным способом. Есть ли лучший способ сделать это?

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