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

在另一视图展示字段数据时遇KeyError:list_id问题求助

问题解决方案

1. 修复KeyError: "list_id"错误

这个报错的核心原因是你当前用的ListListView是列表页视图,URL配置里没有传递list_id参数到视图的kwargs中,直接取self.kwargs["list_id"]自然会找不到键值。

两种修正方向:

  • 如果是在列表页展示每个HBTYList关联的HBTYItem的created_date:
    不需要在get_context_data里提前批量查询数据,直接在模板中通过模型关联关系获取。假设HBTYItem的hbty_cust_id是外键关联到HBTYList,模板代码可以这么写:

    {% for obj in object_list %}
        <tr>
            <!-- 展示HBTYList自身字段 -->
            <td>{{ obj.id }}</td>
            <!-- 展示关联的HBTYItem的created_date,根据实际关联关系调整,比如取第一个关联项 -->
            <td>{{ obj.hbtyitem_set.first.created_date|date:"Y-m-d H:i:s" }}</td>
        </tr>
    {% endfor %}
    

    同时删除get_context_data里的context['dc'] = ...这一行。

  • 如果是误将列表页当成详情页,想展示单个HBTYList的关联数据:
    把视图改成DetailView,同时修改URL配置添加list_id参数:

    # urls.py 示例
    path('list/<int:list_id>/', ListDetailView.as_view(), name='list-detail'),
    

    视图代码调整为:

    class ListDetailView(DetailView):
        model = HBTYList
        template_name = "accounts/modals/nomodal/detail.html"
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            # 此时self.kwargs["list_id"]能正确获取URL传递的参数
            context['dc'] = HBTYItem.objects.filter(hbty_cust_id=self.kwargs["list_id"])
            return context
    

2. 确保created_date字段正常展示

  • 先确认模型中存在created_date字段,且类型正确:
    # models.py 示例
    class HBTYList(models.Model):
        created_date = models.DateTimeField(auto_now_add=True)
        # 其他字段
    
    class HBTYItem(models.Model):
        hbty_cust_id = models.ForeignKey(HBTYList, on_delete=models.CASCADE)
        created_date = models.DateTimeField(auto_now_add=True)
        # 其他字段
    
  • 模板中展示时,可通过Django过滤器格式化日期:
    {{ obj.created_date|date:"Y-m-d H:i:s" }}
    

3. 优化过滤功能的代码

当前get_context_data里重复实例化过滤器可以简化,直接复用get_queryset的结果:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['filter'] = HbtyCustomerListFilter(self.request.GET, queryset=self.get_queryset())
    return context

内容的提问来源于stack exchange,提问作者d3vkidhash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:05:22