django 按列计算行数
django count rows by column
我有这样的模型
class tbl_invoice(models.Model):
invoice_id = models.IntegerField(blank=True, null=True)
client_id = models.ForeignKey(tbl_customer, on_delete=models.CASCADE)
invoice_number = models.IntegerField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
total_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
total_tax = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
discount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
paid_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
balance = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
一个客户显然可以有多个发票,我想在 table
中根据客户显示所有发票
喜欢
Customer Total Invoices Total Amount Total Tax
Client1 10 50000 200
Client2 8 10000 500
我试过了
tbl_invoice.objects.values('client_id').order_by().annotate(Count('client_id'))
但这给出了
<QuerySet [{'client_id': 19, 'client_id__count': 5}, {'client_id': 21, 'client_id__count': 10}, {'client_id': 24, 'client_id__count': 15}]>
这确实给出了行数,但我怎样才能获得其他数据??
抱歉,如果这是重复的,但我无法理解这个简单的查询。
您必须计算发票编号。试试这个:
tbl_invoice.objects.values('client_id').order_by().annotate(Count('invoice_id'), Sum('total_amount'), Sum('total_tax'))
而不是这个
tbl_invoice.objects.values('client_id').order_by().annotate(Count('client_id'))
我有这样的模型
class tbl_invoice(models.Model):
invoice_id = models.IntegerField(blank=True, null=True)
client_id = models.ForeignKey(tbl_customer, on_delete=models.CASCADE)
invoice_number = models.IntegerField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
total_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
total_tax = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
discount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
paid_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
balance = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
一个客户显然可以有多个发票,我想在 table
中根据客户显示所有发票喜欢
Customer Total Invoices Total Amount Total Tax
Client1 10 50000 200
Client2 8 10000 500
我试过了
tbl_invoice.objects.values('client_id').order_by().annotate(Count('client_id'))
但这给出了
<QuerySet [{'client_id': 19, 'client_id__count': 5}, {'client_id': 21, 'client_id__count': 10}, {'client_id': 24, 'client_id__count': 15}]>
这确实给出了行数,但我怎样才能获得其他数据??
抱歉,如果这是重复的,但我无法理解这个简单的查询。
您必须计算发票编号。试试这个:
tbl_invoice.objects.values('client_id').order_by().annotate(Count('invoice_id'), Sum('total_amount'), Sum('total_tax'))
而不是这个
tbl_invoice.objects.values('client_id').order_by().annotate(Count('client_id'))