python - 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,})
但它也不起作用。作为最后的手段,我不得不在这里寻求帮助。如果有人可以帮助我,我真的很感激。先感谢您。
解决方案
您要使用的是output_field
Sum 中的参数,并将 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']