Djangoモデルのアイテムを一覧表示するにはどうすればよいですか?
-
07-07-2019 - |
質問
django Publisherの例を使用して、list_publisher.htmlテンプレートを介してdb内のすべてのパブリッシャーを一覧表示したい場合、テンプレートは次のようになります。
{% 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 %}
しかし、<!> quot; http://127.0.0.1:8000/list_publisher/ <!> quot;テンプレートはページタイトルをエラーなしで印刷するだけです!私は何を間違えていますか?
解決
いくつかの提案:
- base_site.htmlが
{% block content %}{% endblock %}
セクションを定義してmy list_publisher.htmlで絞り込むことを確認します - リストのカーディナリティを確認します:
{%regroup publisher by name as pub_list %}{{ pub_list|length }}
。少なくともリストの長さが表示されるはずです。 isが「0」の場合...何も表示されない理由がわかります - regroupを使用する前に、リストが実際に名前でソートされていることを確認するか、
{% regroup publisher|dictsort:"name" by name as pub_list %}
を使用して確認します
長さが「0」の場合、パブリッシャーが定義され(データベースから初期化されている)、適切にソートされていることを確認する必要があります。
つまり、テンプレートまたは定義済みのテンプレートのどこにでも表示されますか:
publisher = Publisher.objects.all().order_by("name")
?
(再度、名前による順序が重要であり、再グループ化タグが適切に機能することを確認します)
他のヒント
VonCによる適切な回答。
pub_listをすばやく簡単に確認するには、テンプレートに[{{pub_list}}]
を貼り付けます。空の場合に備えて角括弧で囲みます。ところで、[,,,,,]
のようなものが表示される場合があります。これは、オブジェクト参照が<!> lt; <!> gt;でラップされているためです。そしてあなたのブラウザはWTFを行っていますか?ソースを表示するだけで、完全な結果が表示されます。
所属していません StackOverflow