Annotate - оптимизация Django ORM

Я хочу аннотировать похожий продукт из Order-Line. где Line имеет отношение foreign-key с продуктами. я показываю, что я сделал до сих пор.

recommended_product_ids = Line.objects.all()
recommended_product_ids = recommended_product_ids.annotate(
    rank=Sum('quantity'),
).filter(rank__gte=2).order_by('-rank')[:max_count]

У меня нет доступа ни к вашей базе данных, ни к моделям. Но это похоже на Django-Oscar (это django ecommerce платформа, похожая на вашу проблему).

Если OrderLine имеет FK к Product, и Order. Тогда Product и Order имеют связанные поля к OrderLines, например product.order_lines.all(). Вы можете сделать это следующим образом:

products = Product.objects.annotate(num_lines=Count('order_lines'))
Вернуться на верх