python-3.x - 如何根据 django 中当前登录的用户获得所有费用的总和?
问题描述
我用来汇总分配给用户的所有费用值。我无法在我的网页中显示它。我怎样才能做到这一点?models.py 代码如下:
class expense(models.Model):
Expensecat=(('food','Food'),
('transportation','Transportation'),
('education','Education'),
('health','Health'),
('clothes','Clothes'),
('beauty','Beauty'),
('hosuehold','Household'),
)
ExpenseAmount=models.FloatField(max_length=100)
Category=models.CharField(max_length=200,choices= Expensecat)
Description=models.TextField(max_length=200)
Date=models.DateTimeField(default=timezone.now)
user=models.ForeignKey(User,on_delete=models.CASCADE)
视图.py
def home(request):
try:
expense_total = expense.objects.filter(user=request.user).aggregate(expenses=Sum('ExpenseAmount'))
except TypeError:
print('No data')
data = {
'Expense':expense_total['expenses'],
}
return render(request, 'budget/home.html', data )
HTML 代码:
<div class="col-lg-3 col-md-6 d-flex stat my-3">
<div class="mx-auto">
<h6 class="text-muted">Expense</h6>
<h3 class="font-weight-bold">{{ Expense.expenses }}</h3>
<h6 class="text-success"></h6>
</div>
解决方案
您将其分配给Expense
变量,因此您将其渲染为Expense
,而不是Expense.expenses
,您已经“解包”了字典中的值:
{{ Expense }}
注意:当你用钱进行计算时,最好使用
DecimalField
[Django-doc],而不是FloatField
[Django-doc]。执行计算时,浮点数会产生舍入误差。您还可以使用django-money
[GitHub]指定MoneyField
. 这也指定了一种货币,并且可以将货币转换为不同的货币。
推荐阅读
- javascript - 如何设置不可更改的页面大小
- c++ - 哈希文件递归并保存到向量 Cryptopp
- r - mtcars 数据集中的 cor 值相等?
- javascript - GraphQL:Rootquery 返回 null
- flutter - 颤振列小部件:不同高度的孩子
- php - 将元素添加到 foreach 循环内的数组
- php - php - 实时部署时出现 Laravel 404 错误
- html - 视口缩小时出现水平滚动条
- swift - 作为参数的数组不适用于 Alamofire
- haskell - 为什么 multiplesOf num max = [num*k | k <- [1..floor (max/num)]] 抛出错误?