【问题标题】:Edit result of annotate in a Django queryset在 Django 查询集中编辑注释结果
【发布时间】:2020-07-04 06:36:58
【问题描述】:

我有一个查询集

queryset = BigTable.objects.values('field1__code', 'field2__code').annotate(Sum('field3'))
  • 结果值 field3__sum = "1234567" 是一个整数,对于我的模板来说很长。
  • 如何将其除以 1000(例如)并得到一个小数,如“1234,5”?
  • 谢谢

【问题讨论】:

    标签: django django-queryset django-annotate


    【解决方案1】:

    您可以将总和除以 1'000,方法是将其包装在 Value(..) 中:

    from django.db.models import FloatField, Sum, Value
    
    queryset = BigTable.objects.values(
        'field1__code', 'field2__code'
    ).annotate(
        field3_sum=Sum('field3', output_field=FloatField())/Value(1000, output_field=FloatField())
    )

    然而,最好将您的字段命名为field3_sum,因为这会产生错误的印象。例如,也许您可​​以使用field3_sumdiv1000

    在您的模板中,您可以使用|floatformat template filter [Django-doc] 进行渲染,例如:

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

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2022-01-10
      • 2016-08-17
      • 1970-01-01
      • 2018-06-19
      • 2019-12-19
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多