我有一个将外键传递给其子表的主表。我想要显示来自主表的所有项目的列表以及来自子表格的列的总和。Django:具有由主表传递的唯一密钥的子表列的总和
如何在Django的queryset中做到这一点?请帮忙。
Models.py
class serviceinvoice(models.Model):
user=models.ForeignKey(settings.AUTH_USER_MODEL,related_name='invoice')
invoice_number=models.PositiveIntegerField()
#invoice_no = models.CharField(max_length = 500, default = increment_invoice_number, null = True, blank = True)
invoice_date = models.DateField()
invoice_receivable=models.ForeignKey(Receivables,null=True)
#total_amount=models.DecimalField(decimal_places=2,max_digits=20)
#total_amountwithtax=models.FloatField()
company_det=models.ForeignKey(Company,related_name='companydetails')
class Meta:
unique_together = (("user", "invoice_number"),)
ordering=('-invoice_number',)
def __str__(self):
return self.invoice_number
def get_absolute_url(self):
return reverse('invoice:editinvoice', args=[self.invoice_number])
class serviceinvoiceitems(models.Model):
user=models.ForeignKey(settings.AUTH_USER_MODEL,related_name='serviceinvoiceitem')
invoice_number=models.ForeignKey(serviceinvoice,related_name='serviceitems1')
Product=models.CharField(max_length=1000)
UOM=models.CharField(max_length=100)
Quantity=models.FloatField()
Rate=models.FloatField()
Tax_rate=models.FloatField()
Total_sale=models.FloatField()
Sales_tax=models.FloatField()
Total_billamount=models.FloatField()
def __str__(self):
return self.invoice_number
views.py
@login_required
def inv_list(request):
invoice_list=serviceinvoice.objects.filter(user=request.user)
totallist=serviceinvoice.objects.annotate(sum_list=Sum('serviceitems1__Total_sale'))
return render(request,'account/invoicelist.html',{'invoice_list':invoice_list,'totallist':totallist})
到目前为止,在视图中,我能够过滤发票列表用户,但我怎么得到总来自子模型的每个发票,即serviceinvoiceitems。
试过的东西,通过模板
{{ totallist.sum_list }}
但 说明不了什么。
您需要显示更多详细信息。模型是什么样子的?到目前为止,你有什么? –
@DanielRoseman更新了问题。 –