You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中TaskList View问题:用户专属未完成任务列表无法显示

问题解决方法

核心问题分析

你的代码逻辑本身无语法错误,但在get_context_data中过滤数据集并非Django ListView的最优实践;若Task对象未正确关联当前用户,会直接返回空列表,导致模板无内容显示。

修正代码(推荐写法)

重写get_queryset方法过滤当前用户的任务,这是ListView的标准用法,更高效且符合框架设计:

class TaskList(LoginRequiredMixin, ListView):
    model = Task
    context_object_name = "tasks"

    def get_queryset(self):
        # 返回当前用户的所有任务
        return super().get_queryset().filter(user=self.request.user)
        # 若需直接展示未完成任务,替换为下方代码:
        # return super().get_queryset().filter(user=self.request.user, complete=False)

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 统计当前用户未完成任务数量
        context["count"] = context["tasks"].filter(complete=False).count()
        return context

额外检查项

  1. Task模型关联验证:创建Task时需确保user字段赋值为当前登录用户,示例代码:
    form.instance.user = self.request.user
    form.save()
    
  2. 模板渲染验证:确认模板中正确循环渲染tasks:
    {% for task in tasks %}
        <div>{{ task.title }}</div>
    {% empty %}
        <p>暂无未完成任务</p>
    {% endfor %}
    

内容的提问来源于stack exchange,提问作者Oula R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:17:54