2011-06-29 17 views
2

私は奇妙な問題を抱えています...このコードは他のビューで作業するまでうまくいきましたが、今は動作しません。ここで オブジェクトは反復可能ではありません

が私の見解です:

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 

私はいくつかの他のビューで働いたまではわからない...罰金働いていましたなぜ今働いていないのですか?もし誰かが私がそれを感謝するのを助けることができる!

答えて

7
project = Project.objects.get(slug=project_slug) 
tickets = Ticket.objects.get(project=project) 

この2行が問題の原因です。彼らはリストのような反復可能なものを返すわけではありませんが、反復可能ではないオブジェクトも返します。 getの代わりに、代わりにフィルタを使用して、リストを返します。

+0

ありがとうございました!チャームのように働いた!私はちょうどそれをあまりにも長く見ていたと思う。 :) – DesiredDesigns

3

get()メソッドは、単一のオブジェクトを返します。代わりにfilter()メソッドを使用することを意図したのでしょうか?

関連する問題