Django组通过查询设置并与另一个字段相乘

时间:2016-01-10 18:11:05

标签: python mysql sql django

我有这种模式:

class OrderProducts(models.Model):
    product  = models.ForeignKey(Product)
    quantity = models.IntegerField()
    ...

我需要计算有多少OrderProducts拥有相同的产品。它正在使用这一行:

ordersProduct = OrderProducts.objects.prefetch_related('product_set')\
   .filter(my-filter)\
   .values('product','product__title')\
   .annotate(total=Count('product'))\
   .order_by('-total')

此行有效,我知道我有多少相同的OrdersProduct。但是,我需要为每个OrdersProduct添加总数量和每个orderProduct的数量。

如果我在同一产品中有3次相同的OrderProduct,我想知道这3个查询的每个数量的数量(总数)。

谢谢!

编辑:

它正在使用它:

ordersProduct = OrderProducts.objects.prefetch_related('product_set')\
    .filter('my-filter')\
    .values('product','product__title')\
    .annotate(total_ordered=models.Sum('quantity'),num_orders=models.Count('product'))

1 个答案:

答案 0 :(得分:0)

这就是你想要的吗?

class OrderProducts(models.Model):
    product  = models.ForeignKey(Product, related_name='orders')

Product.objects.annotate(total_ordered=models.Sum('orders__quantity'),
                         num_orders=models.Count('orders__id'))