Очень нужна помощь по Django ORM.

Есть следующие модели:

class ProductCategory(models.Model): name = models.CharField(max_length=50)

class Product(models.Model): name = models.CharField(max_length=50) category = models.ForeignKey(ProductCategory, on_delete=models.PROTECT)

class Order(models.Model): time = models.DateTimeField(auto_now_add=True, blank=True) pay_type = models.BooleanField() cost = models.IntegerField()

class OrderDetail(models.Model): order_id = models.ForeignKey(Order, on_delete=models.CASCADE) product_id = models.ForeignKey(Product, on_delete=models.CASCADE) count = models.IntegerField()

Получаю список заказов (Order) с помощью фильтра за определенное время (start_date, stop_date). Подскажите как получить по списку заказов - список продуктов, из которых состоят эти заказы, причем продукты могут повторяться в разных заказах и их нужно просуммировать. А также нужно сгруппировать эти продукты по категориям, к которым они относятся.