2010-05-03 10 views
42

'dan nesne listeleme Tüm Konferansların bir listesini yazdırmaya çalışıyorum ve her bir konferans için, 3 Hoparlörü yazdırın. Benim şablonundaManyToManyField

Ben: my views.py dosyasında

{% if conferences %} 
     <ul> 
     {% for conference in conferences %} 
       <li>{{ conference.date }}</li> 
       {% for speakers in conference.speakers %} 
         <li>{{ conference.speakers }}</li> 
       {% endfor %} 
     {% endfor %} 
     </ul> 
{% else %} 
<p>No Conferences</p> 
{% endif %} 

Ben:

from django.shortcuts import render_to_response 
from youthconf.conference.models import Conference 

def manageconf(request): 
     conferences = Conference.objects.all().order_by('-date')[:5] 
     return render_to_response('conference/manageconf.html', {'conferences': conferences}) 

konferans adında bir model yoktur. Birçok üzerinde all çağırmanız gerekir {% for speakers in conference.speakers %}

cevap

80

: bu hat ile

Caught an exception while rendering: 'ManyRelatedManager' object is not iterable 

: adında bir sınıf Konferanslar bir ManyToManyField adlı hoparlörlü

hatası alıyorum olan yinelenen bir nesne almak için çok alan. Ayrıca, sonraki satır, conference.speakers yerine konuşmacıyı içermelidir.

{% for speaker in conference.speakers.all %} 
     <li>{{ speaker }}</li> 
{% endfor %} 
+0

Çok teşekkür ederim :) i düşünüyordum olarak uzak olmayan oldu! –

+0

Benim görüşüme göre, ManyRelatedManager'ı bir sorguyu iletmek için bir listeye dönüştürmek isterim? – EduardoMaia

12

Benzer içeride pythoncode bu olacaktır:

for speaker in conferenece.speakers.all(): 
    print speaker.FIELDNAME