Является ли использование select_related () более эффективным при выполнении фильтрованного выбора в поле связанного объекта набора объектов модели? - PullRequest
0 голосов
/ 08 января 2020

В документах djangoproject упоминается следующее:

Note that the select_related() QuerySet method recursively prepopulates the cache of all one-to-many relationships ahead of time. Example:

>>> e = Entry.objects.select_related().get(id=2)
>>> print(e.blog)  # Doesn't hit the database; uses cached version.
>>> print(e.blog)  # Doesn't hit the database; uses cached version.

Является ли рекурсивное предварительное заполнение кэша заблаговременно более эффективным, чем если бы это не было сделано? А что, если у Entry будет другое отношение, скажем, к объекту X, будет ли объект X также кэшироваться заранее? Другими словами, будут ли кэшироваться все поля связанных объектов, которыми может обладать Entry?

1 Ответ

0 голосов
/ 08 января 2020

Django s select_related по умолчанию извлекает все связанные поля, однако для изменения этого поведения в качестве аргументов используются поля. Является ли это «эффективным», полностью зависит от реализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...