Django开发待办清单Add Task提交后任务列表不展示问题求助
问题根因
你做了多用户权限隔离,任务列表视图默认只查询当前登录用户关联的任务,但新增任务时没有自动绑定提交任务的登录用户,导致新增任务的用户关联字段为空,列表过滤时匹配不到对应数据,因此不展示。
修复步骤
- 给任务CreateView新增
form_valid方法,自动绑定当前登录用户到新增任务
# 在你的TaskCreateView类中添加如下代码 def form_valid(self, form): form.instance.user = self.request.user return super().form_valid(form)
- 确认CreateView的
fields配置没有包含user字段,避免表单出现用户选择项
class TaskCreateView(CreateView): model = Task # 仅保留任务自身的属性字段,不要加user fields = ['title', 'description', 'completed'] success_url = reverse_lazy('tasks') # 提交成功跳转回任务列表
- 确认任务列表视图的查询集过滤逻辑正确,仅返回当前用户的任务
# 在你的TaskListView类中添加如下代码 def get_queryset(self): return Task.objects.filter(user=self.request.user)
验证操作
修复后重新提交新任务,即可在列表页正常看到数据。之前后台已存在的无关联用户的任务,可手动在admin后台绑定对应用户,或直接删除即可。
内容的提问来源于stack exchange,提问作者manasi
相关产品推荐
相关产品推荐

