Django添加了两个对象来查看

时间:2012-01-24 22:06:15

标签: python django django-templates

你对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 %}

有没有简单的方法可以做到这一点?

1 个答案:

答案 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