是否可以获取包含计算值的列的值之和?我尝试在documentation和问题here之后呈现页脚,但没有结果。
编辑:
class BillsColumn(Column):
def render(self, record):
bills = record.certificatebills.all()
total_bill = 0
for bill in bills:
total_bill += bill.bill_amount
return(round(total_bill, 2))
def render_footer(self, bound_column, table):
column_values = sum(columns_somehow)
return column_values
这是我正在使用的自定义列。它返回每个证书的证书账单总和,然后将其显示在“列”中。我不知道如何在render_footer方法中访问此计算值。
答案 0 :(得分:0)
您可以使用以下内容将total_bill
累积在类属性中:
class BillsColumn(Column):
column_total = 0
def render(self, record):
bills = record.certificatebills.all()
total_bill = 0
for bill in bills:
total_bill += bill.bill_amount
# accumulate
self.column_total += total_bill
return round(total_bill, 2)
def render_footer(self, bound_column, table):
return round(self.column_total, 2)
根据记录的帐单数量,让de database进行计算可能会更有效。这称为aggregation,可能看起来像这样:
from django.db.models import Sum
class BillsColumn(Column):
column_total = 0
def render(self, record):
total = record.certificatebills.aggregate(total=Sum("bill_amount"))['total']
self.column_total += total
return total
def render_footer(self, bound_column, table):
return round(self.column_total, 2)
如果对表进行了分页,则页脚中的值仅表示当前页面中记录的帐单。如果要汇总所有页面,则必须对表中的所有记录的所有bill_amount
进行汇总。