gpt4 book ai didi

django - 显示 Django 模型中创建的项目总数

转载 作者:行者123 更新时间:2023-12-02 06:58:52 25 4
gpt4 key购买 nike

我的 Django 项目包含一个带有项目和任务的任务管理器,我有一个通用列表页面,显示所有项目的列表及其总任务的信息:

class IndexView(generic.ListView):
template_name = 'projects/index.html'
context_object_name = 'project_list'

def get_queryset(self):
"""Return 10 projects."""
return Project.objects.order_by('is_complete')[:10]

我想在我的列表页面上显示添加的项目和任务的总数,但我不确定应该如何处理。我当前的所有工作都是围绕列出每个项目中包含的任务数量,但现在我想要一个总数 - 我应该将其添加为新 View 吗?例如,我尝试将其添加到上面的 View 中:

def total_projects(self):
return Project.objects.count()

然后在我的模板上调用 {{ project_list.total_projects }},但它不会返回任何内容。

View 是执行此操作的正确位置吗?

最佳答案

All by current work has been around listing the number of tasks that are included i each project, but now I want a total - should I add this as a new View?

这要看情况。如果您只想显示数据库中前 10 个已完成项目的项目和任务总数(这是您的 get_queryset 方法的作用,请小心),我会全部完成在同一个 View 中(仅仅为了显示一些数字而创建一个新 View 是没有用的,这不是 ListView IMO 的目的)。

另一方面,您从模型的实例调用类的实例方法 (total_projects)。该方法在模型中不存在,并且当在模板中调用对象中不存在属性/方法时,您什么也得不到。根据上一段,我将使用 get_context_data 在 View 的上下文中设置它。 :

def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
data["total_projects"] = Projects.objects.count()
# I'm assuming you only need the whole number of tasks with no separation
data["total_tasks"] = Task.objects.count()

return data

最后,您可以编辑 get_queryset 方法并将其设为 instance attribute (如果您希望它更干净,并且无需额外代码即可处理过滤):

class IndexView(generic.ListView):
queryset = Project.objects.order_by('is_complete')[:10]

关于django - 显示 Django 模型中创建的项目总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54077027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com