У меня есть таблица со следующими образцами данных:
id user_id rank date_promoted
1 20 firefighter 1991-10-31
2 32 lieutenant 2003-01-03
3 34 firefighter 1990-11-23
4 20 lieutenant 1993-02-03
5 20 captain 2007-05-23
6 46 firefighter 1999-12-03
id - мой первичный ключ. user_id - это внешний ключ для пользователей в таблице auth_user.
Моя цель - создать запрос, который предоставляет список старшинства по рангу Так, например, чтобы создать запрос для ранга 'пожарный', я бы отфильтровал по рангу для пожарного и упорядочил по date_promoted. Но моя проблема в том, что user_id 20 больше не пожарный. Его повысили до лейтенанта, а затем до капитана. Как я в своем запросе исключил его из списка пожарных?
Я думал об использовании 'exclude', но это создает AND и просто отфильтровывает записи для капитана и лейтенанта для user_id, оставляя запись для firefighter для user_id 20.
Я также думал об использовании объектов Q, что позволяет мне создавать ИЛИ. Но опять же, это оставляет запись пожарного для user_id 20.
Я не могу понять, как определить, что user_id 20 имеет несколько записей и, следовательно, удалить его / ее из результатов для списка пожарных.
Спасибо.