在PurchaseOrder
列表视图中,我想显示按每个不同quantity
分组的总unit
。我正在使用以下模型和函数,但每次调用get_quantity_by_unit()
时都会有一个数据库命中 - 对于列表中的每个对象。
class PurchaseOrder(models.Model):
lines = models.ManyToManyField(
Product, blank=True, through='PurchaseOrderLine' related_name='%(class)s_line')
def get_quantity_by_unit(self):
return PurchaseOrderLine.objects.filter(purchase_order=self).values(
'unit__abbreviation').annotate(sum=Sum('quantity'))
class PurchaseOrderLine(models.Model):
purchase_order = models.ForeignKey(PurchaseOrder)
product = models.ForeignKey(Product)
quantity = models.DecimalField()
unit = models.ForeignKey(Unit)
这可以用django orm实现吗?
以下内容获取总数量,但不是每个不同的unit
:
query = PurchaseOrder.objects.filter(date__gte=cutoff_date).annotate(
total=Sum('purchaseorderline_order__quantity'))
以下内容ValueError: Prefetch querysets cannot use values().
queryset = PurchaseOrderLine.objects.values(
'unit').order_by('unit').annotate(total=Sum('quantity'))
query = PurchaseOrder.objects.filter(date__gte=cutoff_date).prefetch_related(
Prefetch('purchaseorderline_order', queryset=queryset, to_attr='totals'))