Объект не повторяется - PullRequest
2 голосов
/ 29 июня 2011

У меня странная проблема ... Этот код работал нормально, пока я не работал над некоторыми другими представлениями, и теперь он не работает.

Вот мой взгляд:

def showTickets(request, project_slug):
    project = Project.objects.get(slug=project_slug)
    tickets = Ticket.objects.get(project=project)
    payload = { 'project':project, 'tickets':tickets}
    return render(request, 'project/tickets.html', payload)

Шаблон:

{% extends 'project/base.html' %}

{% block title %}Tickets: {{project.name}}{% endblock %}

{% block main %}

<div id="project-nav">
    <span><a href="/project/{{project.slug}}/">Tickets</a></span>
    <span><a href="/book/{{book.slug}}{{book.name}}">Docs</a></span>
    <span><a href="/project/{{project.slug}}/browse">Browser</a></span>
</div>
<div id="action-nav">
    {% block actions %}
    <span><a href="/project/{{project.slug}}/tickets/create">Create Ticket</a></span>
    <span><a href="/project/{{ project.slug }}/tickets/recent/">Recent Activity</a></span>
    <span><a href="/project/{{ project.slug }}/tickets/my/">My Tickets</a></span>
    {% endblock %}
</div>
{% for ticket in tickets %}


<div class="ticket">
    <div class="ticket-header">
        <div class="ticket-title">
            <a href="/project/ticket/{{ticket.pk}}">{{ticket.subject}}</a>
        </div>
        <div id="ticket-number">
            #{{ticket.pk}}
        </div>
        <div id="ticket-state">
            {{ticket.get_state_display}}
        </div>
        <div id="ticket-info">
            Reported by {{ticket.created_by}} | created: {{ticket.created_on }} | modified: {{ticket.modified_on}}
        </div>
    </div>
</div>
{% endfor %}
</div>

{% endblock %}

Ошибка:

Template error:
In template c:........\project\tickets.html, error at line 19
   Caught TypeError while rendering: 'Ticket' object is not iterable

Это работало нормально, пока я не работал наднекоторые другие взгляды ... не уверен, почему это не работает сейчас?Если кто-нибудь может помочь, я буду признателен за это!

Ответы [ 2 ]

7 голосов
/ 29 июня 2011
project = Project.objects.get(slug=project_slug) 
tickets = Ticket.objects.get(project=project) 

Эти две строки являются причиной ваших неприятностей.Они не возвращают итерируемое, например, список, но объект, который вообще не итерируем.Вместо get используйте фильтр, который вернет список.

3 голосов
/ 29 июня 2011

Метод get() возвращает один объект. Возможно, вы намеревались использовать вместо этого filter() метод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...