через FK с моделью B), есть ли возможность отфильтровать кверисет модели A таким образом, чтобы в нем остались только 2 последних (определяется по order_by) объекта, т.е. (пример):
qs = modelA.objects.filter(modelB__field__in=[a,b,c,d,r,c]).prefetch_related(modelB).order_by('created')
хотелось бы как-то обрезать таким образом, чтобы на каждый объект modelA было только 2 последних созданных объекта modelB, т.е. для каждого объекта modelA.modelB.all()[:2], а то не хочется в цикле перебирать, может есть варианты как сразу в 1 запросе это сделать ?
Напиши на SQL это)
тип того SELECT * FROM ( SELECT c.customer_id, o.order_id, ROW_NUMBER() OVER(PARTITION BY c.customer_id) as row_number FROM customers c INNER JOIN orders o ON o.customer_id = c.customer_id ORDER BY c.customer_id) WHERE row_number >= 2
Обсуждают сегодня