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

Django中如何通过ForeignKey的id获取对应关联分类的名称值

问题根因

你当前URL路径中传递的cats参数是分类ID,视图直接将该ID值处理后传给模板,所以模板渲染{{cats}}时只能输出ID数字,无法获取分类名称。

解决方案

步骤1:修改视图逻辑(Views.py)

首先导入快捷查询方法避免无效ID抛出异常,再查询对应分类对象获取名称:

# 顶部先导入get_object_or_404
from django.shortcuts import get_object_or_404

def CategoryView(request, cats):
    # 根据传入的分类ID查询分类对象,不存在则直接返回404
    category = get_object_or_404(Category, id=cats)
    # 过滤该分类下的所有文章
    category_posts = Post.objects.filter(category=category)
    # 直接替换原来传给模板的cats值为分类名称
    return render(request, 'categories.html', {
        'cats': category.name,
        'category_posts': category_posts
    })

修改后模板不需要调整任何代码,原有的{{cats}}会直接输出分类名称。

可选优化:传递完整分类对象到模板

如果后续你需要用到分类的其他字段(比如自定义描述、跳转链接等),可以直接把整个分类对象传给模板,更灵活:

return render(request, 'categories.html', {
    'category': category,
    'category_posts': category_posts
})

模板中通过属性调用即可:

{% block title %}
Blogue | {{category.name}}
{% endblock %}

内容的提问来源于stack exchange,提问作者not-a-great-programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:03