Изменить результат аннотации в наборе запросов Django - PullRequest
1 голос
/ 23 марта 2020

У меня есть набор запросов

queryset = BigTable.objects.values('field1__code', 'field2__code').annotate(Sum('field3'))
  • результирующее значение field3__sum = "1234567" является целым числом и очень длинным для моего шаблона.
  • Как я могу разделить его на 1000 (например) и получить его десятичное число, как "1234,5"?
  • Спасибо

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете разделить сумму на 1'000, обернув ее в Value(..):

from django.db.models import FloatField, Sum, Value

queryset = BigTable.objects.values(
    'field1__code', 'field2__code'
).annotate(
    field3_sum=<b>Sum('field3', output_field=FloatField())/Value(1000, output_field=FloatField())</b>
)

Однако может быть лучше назвать ваше поле , а не field3_sum, так как это производит неправильное впечатление. Возможно, вы можете использовать field3_sumdiv1000, например.

В вашем шаблоне вы можете выполнить рендеринг с помощью |floatformat фильтра шаблона [Django -doc] , для пример:

{{ object.field3_sum<b>|floatformat</b> }}
...