2012-01-24 56 views
4

你好,很新的django和与画廊合作。我想要的是将两个物体放入一个,并且在3小时后仍然无知。Django添加两个对象来查看

使用为画廊photologue和我有一个显示器,我想列出了最新添加的图像所有的画廊为缩略图

list_galleries = Gallery.objects.all() 
g = [] 
for gallery in list_galleries: 
    g.append(gallery.latest(limit=1, public=True)) 

return render_to_response('gallery/list_galleries.html', {'list_galleries': list_galleries, 'images': g}) 

我都试过,但我似乎无法找到一种方式来获得list_galleries for循环的关键而不打破它。

我的观点:

{% for gallery in list_galleries %} 

<p> 
<span class="title"><a href="/gallery/images/{{ gallery.title }}" >{{ gallery.title }}</a> 
Here is the image: <img src="/media/{{ images.0.0.image }}" /> 
</span><br /> 
<span class="flavor">{{ e.date_added|date:"F d, Y, H:m" }}</span><br /> 
</p> 
{% endfor %} 
{% endblock %} 

有没有什么简单的方法来做到这一点?

+0

对不起,如果我不清楚,这是从一个视图中我列出了我所有的画廊,我想列出从该画廊的图像作为缩略图! – daniel

回答

4

使用zip合并两个列表:

return render_to_response('gallery/list_galleries.html', 
          {'galleries': zip(list_galleries, g)}) 

然后在您的视图,你可以这样做:

{% for gallery, latest in galleries %} 
    <!-- your html --> 
{% endfor %} 

哪里gallerylist_galleries一个项目,最新的是g的项目。然而


一个更好的解决办法是在你的Gallery类来创建一个方法:

class Gallery(models.Model): 
    # SQL columns 

    @property 
    def thumb(self): 
     return self.latest(limit=1, public=True) 

然后,你不必创建列表g,并在您的模板,你可以简单地使用gallery.thumb

+0

omg谢谢!!!!! – daniel

+0

@DanielX,不客气:)。看看我的替代建议,这是一个更好的方法来做到这一点。 –