Como faço para listar os itens de meus modelos de Django?
-
07-07-2019 - |
Pergunta
Am trabalhar com Django exemplo Publisher, eu quero lista de todos os editores no db via meu modelo list_publisher.html, meu modelo olhares como;
{% 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 %}
mas quando eu executo " http://127.0.0.1:8000/list_publisher/ " o modelo apenas imprime o título da página com nenhum erro! O que estou fazendo de errado?
Solução
Algumas sugestões:
- Verifique se o seu base_site.html não define uma seção
{% block content %}{% endblock %}
ser refinar por seu meu list_publisher.html - marque a cardinalidade de sua lista:
{%regroup publisher by name as pub_list %}{{ pub_list|length }}
. Que deve pelo menos mostrar o comprimento da sua lista. Se está é '0' ... você sabe por que ele não exibir qualquer coisa - Verifique se a sua lista é de fato classificadas por nome antes de usar reagrupar, ou usar um
{% regroup publisher|dictsort:"name" by name as pub_list %}
para ter certeza
Se o comprimento é '0', você tem que ter certeza publisher é definida (foi inicializada a partir do banco de dados), e classificadas de forma adequada.
Em outras palavras, você vê em qualquer lugar (em seu modelo ou nos modelos definidos):
publisher = Publisher.objects.all().order_by("name")
(Mais uma vez, a ordem por nome é importante, para garantir a sua tag reagrupar funciona corretamente)
Outras dicas
Boa resposta por VonC.
Uma maneira rápida e suja para olhada pub_list é [{{pub_list}}]
vara em seu modelo. Eu colocá-lo entre colchetes no caso, é vazio. BTW, você pode obter algo que se parece com [,,,,,]
. Isso ocorre porque referências de objeto são embrulhados em <> e seu navegador vai WTF? Basta fazer uma exibição de fonte e você vai ver o resultado completo.