У меня есть модель под названием «Проекты».Как выбрать конкретный связанный элемент в Django?
Проекты могут быть представлены. Если они есть, они будут отображаться на главной странице (Projects.filter (is_featured = True))
Каждый проект содержит несколько слайдов. Эти слайды могут быть представлены (Slide.is_featured = True) и содержать модель изображения, которая содержит фактическое изображение.
На моей домашней странице я хотел бы отобразить слайд-шоу, в котором каждый слайд содержит имя проекта и изображение, содержащееся в избранном слайде.
Я сделал это, добавив метод «featured_slide()» в моей модели проекта, но теперь я понимаю, что каждый раз нажимаю на БД, и я хотел бы улучшить это, используя «select_related» ' заявление.
Как я могу это сделать?
Оптимально, я хотел бы иметь поле типа 'featured_slide' для представления слайда.
я думал сделать что-то вдоль этих линий:
Projects.filter(is_featured=True).annotate(featured_slide='slides__is_featured=True').select_related(slides__image)
Я знаю, что это не может быть так просто (slides__is_featured не поле базы данных), но вы получите идею.
Damn: о выборе соответствующих проектов. Это блестяще, я бы никогда об этом не думал Есть ли способ ссылки на слайды через проекты? Большая часть кода в шаблонах уже написана, и я хотел бы избежать переписывания. – XelharK
Да, для ссылки на слайды из проекта вы можете найти * обратное * отношение (в документации Django есть материал). Я отредактировал ответ –
Но разве обратный поиск не запускает другой запрос?Я понимаю, что это не так, когда я использую оператор select_related, но если мне нужен только признак слайда, как мне фильтровать слайд-набор без запуска другого запроса? – XelharK