【问题标题】:How to show balance to user in html page which is saved in database?如何在保存在数据库中的 html 页面中向用户显示余额?
【发布时间】:2019-12-19 16:41:18
【问题描述】:

我已将余额分配给每个注册的用户并将余额保存在数据库中,但我无法在html page 中显示他们。也许我在python 文件中也犯了一些错误。在views.py 中,我评论了一些我也使用过的代码值,但仍然没有得到结果。怎么做?

models.py

class Payment(models.Model):
amount = models.DecimalField(max_digits=12, decimal_places=2)
owner = models.ForeignKey(User, on_delete=models.CASCADE)

views.py

from django.db.models import Sum
from decimal import Decimal
def payment(request):
    total_amount = Payment.objects.filter(
    owner=request.user)['total_amount'] or Decimal('0.00')
    for field in total_amount:
        field.amount

    context = {
        'total_amount': total_amount
    }
    return render(request, 'index.html', context)

HTML 页面

   <li style="float: right;">Your Balance: Rs. {{total_amount}}</li>    

Python 外壳

>>> from users.models import Payment
>>> Payment.objects.all()
<QuerySet [<Payment: Payment object (1)>, <Payment: Payment object (2)>]>

包含内容的数据库图片

https://ibb.co/481nzqv
https://ibb.co/B4M1NTk

【问题讨论】:

    标签: python html django


    【解决方案1】:

    试试这个

      from django.db.models import Sum
      from django.contrib.auth.decorators import login_required
    
    
      @login_required
      def payment(request):
          totalamount = Payment.objects.filter(
              owner=request.user).aggregate(Sum('amount'))
    
          context = { 'total_amount': totalamount['amount__sum']}
          return render(request, 'index.html', context)
    

    参考this

    【讨论】:

    • 它没有用。结果与之前的Your Balance is: Rs. 相同。卢比之后。它显示我没有平衡。
    • Payment.objects.filter(owner=request.user) 打印什么?
    • 尝试在 manage.py shell 中执行部分提供的查询并检查结果。它应该可以工作。
    • 我不想汇总。实际上我删除了上面的聚合代码。我只想让它在我登录该用户时向我显示该用户的余额。
    • 你对“平衡”的概念是什么。请您详细说明数据示例。您的模型中有哪些输入数据以及您期望的输出是什么?
    【解决方案2】:

    在您的情况下,您将 total_amount 作为 Payment 对象返回。

    所以你只需要在页面上用 {{total_amount.amount}} 访问他的属性

    或者只是当你将它传递给渲染时

    context = {
        'total_amount': total_amount.amount
    }
    

    你最好把它重命名为付款,这样会更清楚:)

    【讨论】:

    • 您可以将对象打印到控制台并查看返回的内容。尝试使用 print(total_amount.__dict__) 打印
    • 我只想在我登录该用户时显示该用户的余额。
    • 顺便说一句,我看到您正在按所有者过滤,并且在表中该列是 owner_id。你确定你得到任何结果吗?
    • No No 我没有从数据库中获取任何数据。我没有得到任何结果。它只是向我展示了来自 html 页面的Your Balance is: Rs.。我使用了Payment.objects.all(),但没有结果。
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2016-08-06
    • 1970-01-01
    • 2018-01-15
    • 2020-12-18
    • 2012-11-25
    相关资源
    最近更新 更多