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
相关产品推荐
相关产品推荐

