Джанго добавляет два объекта для просмотра - PullRequest
4 голосов
/ 25 января 2012

Привет, совершенно новый для django и работающий с галереей.Я хочу получить два объекта в одном, и через 3 часа я все еще не знаю.

Использование фотолога для галереи, и у меня есть экран, на котором я хочу перечислить все галереи с последним добавленным изображением в виде эскиза

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 Ответ

4 голосов
/ 25 января 2012

Используйте 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.

...