我想从查询集值中以表格或可读形式显示月份和总付款额。
Models.py
class Payment(models.Model):
statementperiod = models.DateField(default = date.today())
paymentdate = models.DateField(default = date.today())
paymentamount = models.IntegerField()
paymentmethod = models.CharField(max_length=100 )
Status = models.CharField(max_length = 250, default = 'paid', choices = PAYMENT_CHOICES)
Paynote = models.CharField(max_length = 250, null = True, blank = True)
@classmethod
def totalpayment(cls):
total = Payment.objects.annotate(month=TruncMonth('paymentdate')).values('month').annotate(total_payment=Sum('paymentamount'))
return { total}
模板中的QuerySet值:
{<QuerySet [{'month': datetime.date(2019, 11, 1), 'total_payment': 315}, {'month': datetime.date(2019, 12, 1), 'total_payment': 8348}, {'month': datetime.date(2020, 1, 1), 'total_payment': 6292}]>}
如何格式化这些值?
答案 0 :(得分:0)
您可以使用人性化Django应用程序中的“ intcomma”模板标签来格式化total_payment: https://docs.djangoproject.com/en/3.0/ref/contrib/humanize/
从文档中
要激活这些过滤器,请在您的INSTALLED_APPS设置中添加“ django.contrib.humanize”。完成此操作后,请在模板中使用{%load humanize%},您将可以访问以下过滤器。
模板示例:
{% load humanize %}
{{ total_payment|intcomma }}
并且,根据您想要格式化月份的方式,人性化具有“ naturalday”和“ naturaltime”模板标签。 但是,您也可以使用“日期”过滤器: https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#date
示例:
{{ month|date:"M" }}