你对django很新,并与画廊合作。我想要的是将两个物体合二为一,而且在3小时后我仍然无能为力。
使用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 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 :(得分:4)
使用zip
合并两个列表:
return render_to_response('gallery/list_galleries.html',
{'galleries': zip(list_galleries, g)})
然后在您的视图中,您可以执行此操作:
{% for gallery, latest in galleries %}
<!-- your html -->
{% endfor %}
其中gallery
是来自list_galleries
的项目,而最新的是来自g
的项目。
更好的解决方案是在Gallery
类中创建一个方法:
class Gallery(models.Model):
# SQL columns
@property
def thumb(self):
return self.latest(limit=1, public=True)
然后您不必创建列表g
,您可以在模板中使用gallery.thumb
。