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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top