Отфильтровать данные из таблицы по последней записи связанной таблицы
Есть таблица заказов. Через внешний ключ к каждому экземпляру заказа цепляется таблица со статусами заказа. Таблицу сделал отдельную, т.к. необходимо вести историю изменений каждого заказа.
class Order(model.Model):
customer = models.CharField('Клиент', max_length=200)
product = models.CharField('Товар', max_length=200)
.....
class OrderStatus(models.Model):
STATUSES_LIST = (
('1', 'Создан'),
('2', 'В обработке'),
('3', 'Отправлен'),
)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
status = models.CharField(max_length=1, choices=STATUSES_LIST, default=1)
status_date = models.DateTimeField('Дата изменения заказа')
Вопрос: как написать запрос для вывода списка заказов с текущим статусом, например равным '1'? Т.е. организовать некий фильтр.
На ум приходит такой код:
orders = Order.objects.filter(orderstatus__status=1)
return render(request, 'orders_list.html', context={'orders': orders})
Но проблема в том, что запрос возвращает все записи в которых хотя бы раз был статус, равный '1', а надо, чтоб брался только последний статус для каждого заказа и попадал в выборку.
Конечно, можно потом пробежаться циклом по полученному QuerySet'у, но может есть способ сделать "правильную" выборку через ORM?