Как выполнить левое объединение и выбрать флаг, если поля существуют в правой таблице в django

У меня есть таблицы статей и закладок, и я хочу получать статьи, получая флаг is_bookmarked, если пользователь добавил статью в закладки.

ТаблицаArticle содержит все метаданные, относящиеся к статье, а таблица закладок имеет столбцы user и article для хранения данных о том, какой пользователь добавил статью в закладки, т.е. рассмотрим таблицу Bookmark со столбцами article_id и user_id и комбинированным уникальным ограничением для них.

SELECT a.id AS article_id, a.title, (b.article_id IS NOT NULL) AS is_bookmarked FROM article_article a LEFT OUTER JOIN article_bookmark b ON a.id = b.article_id AND b.user_id = 1

Теперь я хочу реплицировать этот sql-запрос в запрос django orm, я не хочу использовать CASE или exists, и я не могу реплицировать этот запрос только из-за флага is_bookmarked.

Я пробовал FilteredRelations, но не смог добиться репликации запроса.

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