Sumproducto usando la agregación de Django

Pregunta¿Es posible usarCapacidades de agregación de Django calcular un sumproducto?Antecedentes

Estoy modelando una factura, que puede contener múltiples artículos. La relación de muchos a muchos entre los modelos de Factura y Artículo se maneja a través de la tabla intermediaria InvoiceItem.

El monto total de la factura:amount_invoiced: Se calcula sumando el producto deunit_price yquantity para cada artículo en una factura dada. A continuación se muestra el código que estoy usando actualmente para lograr esto, pero me preguntaba si hay una mejor manera de manejar esto usandoCapacidades de agregación de Django.

Código actual
class Item(models.Model):
    item_num = models.SlugField(unique=True)
    description = models.CharField(blank=True, max_length=100)


class InvoiceItem(models.Model):
    item = models.ForeignKey(Item)
    invoice = models.ForeignKey('Invoice')
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.DecimalField(max_digits=10, decimal_places=4)


class Invoice(models.Model):
    invoice_num = models.SlugField(max_length=25)
    invoice_items = models.ManyToManyField(Item,through='InvoiceItem')

    def _get_amount_invoiced(self):
        invoice_items = self.invoiceitem_set.all()
        amount_invoiced = 0
        for invoice_item in invoice_items:
            amount_invoiced += (invoice_item.unit_price *
                invoice_item.quantity)
        return amount_invoiced

    amount_invoiced = property(_get_amount_invoiced)        

Respuestas a la pregunta(1)

Su respuesta a la pregunta