每个不同

时间:2018-05-15 13:53:49

标签: django django-orm

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'))

0 个答案:

没有答案