开发者社区> 问答> 正文

为什么Django中模型方法的返回值没有显示给模板?

我在我的模型中有这个功能,当我尝试运行服务器时没有出现。我想我正在正确地访问该方法,但当我尝试在total_balance()函数中编写print(“ENTER”)时,没有任何显示,这让我觉得它甚至都没有输入方法。奇怪的是,如果我取出搜索功能,该功能将起作用。

model.py

class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE)

def total_balance():
    transaction_list = Transaction.objects.filter(user=User)
    total_balance_amount = 0
    for transaction in transaction_list:
        if transaction.category=='Income':
            total_balance_amount += transaction.amount
        elif transaction.category=='Expense':
            total_balance_amount -= transaction.amount
    return total_balance_amount

views.py

def profile(request):

if request.method == 'GET':

    query = request.GET.get('q')

    if query and query!="":
        results = Transaction.objects.filter(Q(tag__icontains=query))
    else:
        results = Transaction.objects.all()

    transactions = {
        'transactions' : results,
    }

    profile = {
        'profile' : Profile.objects.all()
    }
    return render(request, 'users/profile.html', transactions, profile)

template.py

Total Balance
                    <p class="card-text">₱{{ profile.total_balance }}</p>

有人可以请帮助我找出这个不起作用的原因以及我如何解决这个问题?谢谢

展开
收起
游客6qcs5bpxssri2 2019-08-28 20:47:59 748 0
1 条回答
写回答
取消 提交回答
  • 这里至少有四件事是错的。

    首先,由于某种原因,你将两个单独的词典传递给render。这不起作用; 你需要一个包含多个条目的字典。

    context = {
        'transactions' : results,
        'profile' : Profile.objects.all()
    }
    return render(request, 'users/profile.html', context )
    

    其次,profile- 尽管有单数名称 - 是所有配置文件的查询集。您需要在模板中迭代它:

    {% for prof in profile %}

    ₱{{ prof.total_balance }}

    {% endfor %} 理想情况下,您可以为上下文变量使用更合适的名称,即profiles。

    接下来,您的total_balance方法本身有两个问题。首先,Python中的任何方法都需要获取self参数。其次,您需要使用该参数来访问值的的user领域,而不是类用户。所以:

    def total_balance(self): transaction_list = Transaction.objects.filter(user=self.user) 虽然注意到第二行可以更容易编写:

    transaction_list = self.user.transaction_set.all()
    
    2019-08-28 20:49:08
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载