Django: как получить рекурсивные поля?

class Item(models.Model):
    # ...
    required_items = models.ManyToManyField("self", symmetrical=False, blank=True)

Поскольку это M2M-отношение, я не могу использовать select_related для оптимизации запроса, поэтому я должен использовать prefetch_related. Но я не понимаю, почему я не могу выбрать глубину рекурсии, как в случае с select_related и параметром depth.

Например, чтобы выбрать 3 уровня рекурсии, я бы ожидал, что будет работать синтаксис, подобный этому (это не так): Item.objects.prefetch_related("required_items", depth=3).

Но вместо этого, то, что я делаю в настоящее время и, очевидно, ужасно, это: Item.objects.prefetch_related("required_items__required_items__required_items")

Я думаю, что в какой-то момент я не понимаю...

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