Как отформатировать набор запросов в шаблоне Django

Я хочу отобразить месяц и итоговую сумму в виде таблицы или в удобочитаемой форме из значения набора запросов.

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': 3459}, {'month': datetime.date(2020, 2, 1), 'total_payment': 2833}]>}

Как отформатировать эти значения?

Всего 1 ответ


Вы можете использовать тег шаблона «intcomma» из приложения humanize django для форматирования итоговой оплаты: 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" }}

Есть идеи?

10000