首页 > 解决方案 > views.py 中的小数

问题描述

我是 Python/Django 的新手,所以请多多包涵!我有简单的 django 视图来总结账面价值:

def portfoyozet(request):
    librarysum = (
        textshare.objects.filter(user_id=request.user.id).aggregate(
            Sum("bookvalue")
        )["bookvalue__sum"]
        or 0
    )
    return render(request, "todo/libsum.html", {"librarysum": librarysum,})

这是完美的工作,但结果是不显示十进制值。4800,30 变成 4800,00 我不需要在这里舍入或类似的东西。我只需要用十进制值显示所有值。这是一件相当常见的事情,但我不知道应该使用哪个过滤器。在谷歌搜索并更改我的views.py时还发现了一些东西,例如:

def portfoyozet(request):
    librarysum = (
        textshare.objects.filter(user_id=request.user.id).aggregate(
            Sum("bookvalue")
        )["bookvalue__sum", 0.00]
        or 0
    )
    return render(request, "todo/libsum.html", {"librarysum": librarysum,})

但它也不起作用。作为最后的手段,我不得不在这里寻求帮助。如果有人可以帮助我,我真的很感激。先感谢您。

标签: pythondjangodjango-views

解决方案


您要使用的是output_fieldSum 中的参数,并将 sum 的输出关联为 FloatField:

from django.db.models import FloatField

#...

librarysum = textshare.objects.filter(user_id=request.user.id).aggregate(Sum('bookvalue', output_field=FloatField()))['bookvalue__sum']

推荐阅读