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")
Я думаю, что в какой-то момент я не понимаю...