Может ли django prefetch related работать с 3 поисками?

Я хочу предварительно получить 3 таблицы плюс начальную таблицу. Вот примеры моделей проекта, над которым я работаю

class ExampleOne(models.Model):
      name = models.Charfield()
      option = models.BooleanField()
      money = IntegerField()

class ExampleTwo(models.Model):
      word = models.Charfield()
      example_one = models.ManyToManyField(ExampleOne)
      number = IntegerField()

class ExampleThree(models.Model):
      number = models.IntegerField()
      example_two = models.ForeignKey(ExampleTwo)

      def get_calculation_one(self):
          Calculate using data from Example_2 and Example_1

class ExampleFour(models.Model):
      date = models.DateField()
      example_three = models.ManyToManyField(ExampleThree)

      def get_calculation_two(self):
          Calculate using data from method on Example_3

Теперь я хочу знать, возможно ли получить данные из всех этих моделей с минимально возможным количеством обращений к базе данных, потому что когда я пытаюсь получить данные, требуется более одной минуты, чтобы получить данные и отправить их на фронтенд

Вычисление может делать много обращений к базе данных, чтобы получить данные и вычислить, и я думаю, что именно поэтому на получение данных уходит больше минуты

мой вид выглядит следующим образом

        qs = ExampleFour.objects.prefetch_related(
             Prefetch('example_three__example_two__example_one')
        ).filter(...)

Есть ли способ использовать предварительную выборку, чтобы сделать поиск быстрее, или есть другое предложение, как я могу переписать свой код, чтобы избежать этого длительного времени поиска?

Примечание: я все еще новичок в Django

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