我有一个模板,列出了所有已创建的项目。我已使用models.Manager
创建了一个查询集,该查询集计算特定tasks
的{{1}}个数。我还在project
中创建了两个变量,用于过滤结果以提供更具体的输出。在我的模板中,我希望能够显示views.py
和Project X has 11 tasks open
(以表格格式)。
应该注意的是,我可以使用Project Y has 5 tasks open
访问TaskCount
经理的结果,但我真正感兴趣的是访问{{ project.tasks }}
变量我的模板。
open_set
models.py
class TaskCount(models.Manager):
def get_query_set(self):
return super(TaskCount, self).get_query_set().annotate(tasks=Count('task'))
class Project(models.Model):
# Model Fields
# some fields
# Model Managers
with_tasks = TaskCount()
views.py
class ListProject(ListView):
model = Project
template_name = 'list_project.html'
# Queries
open_set = Project.with_tasks.filter(task__status=0)
closed_set = Project.with_tasks.filter(task__status=1)
list_project.html
答案 0 :(得分:1)
你不应该在课堂上放置那些查询:ListView不了解它们并且不会将它们传递到任何地方。相反,您应该覆盖get_context_data
并从那里返回。
class ListProject(ListView):
...
def get_context_data(self, *args, **kwargs):
context = super(ListProject, self).get_context_data(*args, **kwargs)
context['open_set'] = Project.with_tasks.filter(task__status=0)
context['closed_set'] = Project.with_tasks.filter(task__status=1)
return context