如何在Django模型中列出项目?

时间:2008-11-08 08:37:46

标签: django django-templates

使用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/”时,模板只打印页面标题而没有错误!我做错了什么?

2 个答案:

答案 0 :(得分:3)

一些建议:

  • 检查您的base_site.html是否确实定义了一个{% block content %}{% endblock %}部分,以便通过我的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")


(同样,按名称排序很重要,以确保您的重组标签正常工作)

答案 1 :(得分:0)

VonC的答案很好。

查看pub_list的快速而肮脏的方法是在模板中粘贴[{{pub_list}}]。我把它放在方括号中,以防它是空的。顺便说一下,你可能会得到类似[,,,,,]的东西。这是因为对象引用包含在&lt;&gt;中你的浏览器正在进行WTF?只需查看源代码,您就会看到完整的结果。