Джанго подзапросы - PullRequest
       9

Джанго подзапросы

1 голос
/ 23 сентября 2011

У меня есть базовая база данных, которую я хочу вытащить под-данные (связанные) в том же виде:

models.py:

class InvoiceHeader(models.Model):
    customer = models.CharField(max_length = 255)
    number = models.IntegerField(unique = True)

class InvoiceLine(models.Model):
    description = models.CharField(max_length = 255)
    price = models.DecimalField(max_digits = 10, decimal_places = 2)
    invoiceheader = models.ForeignKey(InvoiceHeader)

views.py:

def list_invoices(request):
    invoices = InvoiceHeader.objects.all()

То, что я пытаюсь получить, - это сумма счета в представлении list_invoices, которая будет состоять из invoicelines.price (итого) для каждого заголовка счета, так что в шаблоне я могу просто вставить:

{% for invoice in invoices %}
    {{ invoice.subtotal }}
{% endfor %}

Я думаю, что это как-то связано с определением что-то в файле models.py, но я заблудился с этим.

Так что любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 сентября 2011

Вы хотите использовать агрегацию :

from django.db.models import Sum

def list_invoices(request):
    invoices = Item.objects.all().annotate(subtotal=Sum('invoiceline__price'))
...