Как набор запросов знает, какие записи находятся в базе данных, если он не попадает в базу данных - PullRequest
0 голосов
/ 29 мая 2019

Наборы запросов Django ленивы

person_set = Person.objects.all()

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

 person_set = Person.objects.all()

 print(person_set)

Это вывод.

 <QuerySet [<Person: Person object (7)>, <Person: Person object (8)>, <Person: Person object (9)>]>

Если это не такударить базу данных, то как он узнает, что записи в базе данных?Поскольку предполагается запускать запросы только тогда, когда он оценивается с помощью цикла или других методов.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Здесь вы можете увидеть все ситуации, когда QuerySet обращается к базе данных: https://docs.djangoproject.com/en/2.2/ref/models/querysets/#when-querysets-are-evaluated

Одной из них является repr(), которая вызывается при печати набора запросов.

0 голосов
/ 29 мая 2019

Печать набора запросов оценивает его, чтобы построить строковое представление объекта.

...