如何在我的 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:如何在我的视图中逐个迭代一个对象?

如何在搜索栏中按布尔字段过滤 - django

如何在 django rest 框架中列出来自特定模型的所有对象?

如何使用 GeoIP2() django 模型从 IP 地址调用中提取保存的信息以显示在我的 html 中

Python:如何在我的 Django 模板中传递外键的值?