Django ORM должен сделать запрос к базе данных при доступе к связанному полю, если оно уже не кэшировано. Основные способы кеширования связанных объектов: select_related
и prefetch_related
.
То, что вы пытаетесь сделать, немного сложнее; вы пытаетесь получить два конкретных элемента из коллекции. Вы можете использовать .annotate()
и Subquery
для извлечения единичных полей из связанной модели. Это было бы полезно, если вы просто хотите отобразить одно поле из ящика, но если вам нужен весь экземпляр ящика, это не сработает.