簡體   English   中英

如何在 Django 模板中格式化查詢集

[英]How to format the queryset in Django Template

我想從查詢集值中以表格或可讀形式顯示月份和總付款。

模型.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}]>}

如何格式化這些值?

您可以使用humanize django應用程序中的“intcomma”模板標簽來格式化total_payment: https ://docs.djangoproject.com/en/3.0/ref/contrib/humanize/

從文檔:

要激活這些過濾器,請將“django.contrib.humanize”添加到您的 INSTALLED_APPS 設置中。 完成后,在模板中使用 {% load humanize %},您將可以訪問以下過濾器。

模板示例:

{% load humanize %}

{{ total_payment|intcomma }}

而且,根據您想如何格式化月份,humanize 具有“naturalday”和“naturaltime”模板標簽。 但是,您也可以使用“日期”過濾器: https : //docs.djangoproject.com/en/3.0/ref/templates/builtins/#date

例子:

{{ month|date:"M" }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM