Отфильтровать данные из таблицы по последней записи связанной таблицы

Есть таблица заказов. Через внешний ключ к каждому экземпляру заказа цепляется таблица со статусами заказа. Таблицу сделал отдельную, т.к. необходимо вести историю изменений каждого заказа.

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?


Ответы (0 шт):