Как в Django сделать запрос к таблице с несколькими условиями?
У меня есть таблица с полями channel_id
, message_id
и status
. Каждая строка в этой таблице представляет сообщение из канала. Статус может быть отправлен, доставлен или просмотрен. Когда пользователь отправляет сообщение, в эту таблицу добавляется строка со статусом SENT. Когда пользователь читает это сообщение, добавляется еще одна строка со статусом SEEN. Таким образом, для одного сообщения у меня есть несколько строк.
Я хочу получить строки из этой таблицы, которые не имеют статуса SEEN, чтобы знать, какое сообщение не прочитано.
Есть ли способ сделать это с помощью одного запроса к базе данных?
Edit: Я хочу сделать что-то вроде подзапроса. Итак, если у меня есть следующие данные:
[channel_id = 1, message_id = 1, status = 'DELIVERED'],
[channel_id = 1, message_id = 1, status = 'SEEN'],
[channel_id = 1, message_id = 2, status = 'DELIVERED']
запрос дает мне только второе, потому что я знаю, что это то сообщение, которое не было просмотрено.
Нижеприведенный запрос предоставит вам список статусов, добавленных для каждого сообщения. Используя его, вы можете проверить, прочитано ли сообщение или нет.
TableName.objects.filter(channel_id=channel_id, message_id=message_id).value_list('status', flat=True);