【问题标题】:Django adding two objects to viewDjango添加两个对象来查看
【发布时间】:2012-02-18 04:16:21
【问题描述】:

您好,刚接触 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 循环的键而不破坏它。

我的看法:

{% 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 %}

有什么简单的方法吗?

【问题讨论】:

  • 对不起,如果我不清楚,这是来自我列出所有画廊的视图,我想将该画廊中的图像列为缩略图!

标签: python django django-templates


【解决方案1】:

使用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 的项目,而latest 是来自g 的项目。


然而,更好的解决方案是在您的 Gallery 类中创建一个方法:

class Gallery(models.Model):
    # SQL columns

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

那么您不必创建列表g,并且在您的模板中您可以简单地使用gallery.thumb

【讨论】:

  • @DanielX,不客气:)。看看我的替代建议,这是一个更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2020-05-19
  • 2020-01-18
  • 1970-01-01
  • 2021-11-15
  • 2020-05-14
相关资源
最近更新 更多