如何在我的 Django 模型中列出项目?
Posted
技术标签:
【中文标题】如何在我的 Django 模型中列出项目?【英文标题】:How do I list items in my Django models? 【发布时间】:2010-09-21 10:21:46 【问题描述】:正在使用 django Publisher 示例,我想通过我的 list_publisher.html 模板列出数据库中的所有发布者,我的模板看起来像;
% extends "admin/base_site.html" %
% block title %List of books by publisher% endblock %
% block content %
<div id="content-main">
<h1>List of publisher:</h1>
%regroup publisher by name as pub_list %
% for pub in pub_list %
<li> pub.name </li>
% endfor %
</div>
% endblock %
但是当我运行“http://127.0.0.1:8000/list_publisher/”时,模板只会打印页面标题而没有错误!我做错了什么?
【问题讨论】:
刚刚添加了发布者定义和 order_by 建议 【参考方案1】:VonC 的回答很好。
查看 pub_list 的一种快速而肮脏的方法是在模板中粘贴 [pub_list]
。我把它放在方括号里,以防它是空的。顺便说一句,你可能会得到类似[,,,,,]
的东西。这是因为对象引用包含在 中,而您的浏览器正在运行 WTF?只需查看源代码,您就会看到完整的结果。
【讨论】:
【参考方案2】:一些建议:
检查您的 base_site.html 是否定义了一个% block content %% endblock %
部分以由您的 my list_publisher.html 进行优化
检查列表的基数:%regroup publisher by name as pub_list % pub_list|length
。那至少应该显示列表的长度。如果是 '0'...你知道为什么它不显示任何东西
在使用重组之前检查您的列表是否确实按名称排序,或者使用% regroup publisher|dictsort:"name" by name as pub_list %
来确定
如果长度为 '0',则必须确保发布者已定义(已从数据库初始化),并且已正确排序。
换句话说,您是否在任何地方看到(在您的模板中或在定义的模板中):
publisher = Publisher.objects.all().order_by("name")
? (同样,按名称排序很重要,以确保您的重组标签正常工作)
【讨论】:
长度为0,但是当我通过管理界面查看时它有4条记录?? 这意味着当您到达此页面生成时发布商未知/未声明以上是关于如何在我的 Django 模型中列出项目?的主要内容,如果未能解决你的问题,请参考以下文章
对于 django 模型,如何获取 django 管理 URL 以添加另一个或列出对象等?
如何在 django rest 框架中列出来自特定模型的所有对象?