我已经设置了几个模型如下:
页
廊
图像
图库和图像共享多对多的关系。
页面可以有1个或0个画廊。
我创建了一个包含一些图像的图库,并将其附加到页面对象。
但是,我在模板中显示它时遇到了麻烦。
有人可以帮忙吗?
我的页面视图如下所示:
def detail(request, page_id):
p = get_object_or_404(Page, pk=page_id)
return render_to_response('page/detail.html', {'page': p},
context_instance=RequestContext(request))
模板:
{% block images %}
{% if page.gallery %}
{% for image in page.gallery.image_set.all %}
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
{% endif %}
{% endblock %}`
如果我尝试在IF块中输出一些文本,它就会出现,但不在循环中。
任何关于让它发挥作用/一般整理它的建议都将非常感激。
感谢。
答案 0 :(得分:5)
如果Gallery-Image
关系是多对多,我猜你的m2m
模型上有一个Gallery
字段,其中m2m管理器就是字段本身。可以像查看任何其他QuerySet
:model_instance.mym2mfield.filter()
一样查询经理。
如果ManyToManyField
模型上的images
被称为Gallery
,您的模板将如下所示:
{% for image in page.gallery.images.all %}
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
如果您的ManyToManyField
模型上有Image
,则默认名称将如您所述,除非您指定related_name
,否则您将使用该名称。
{% for image in page.gallery.image_set.all %}
答案 1 :(得分:1)
您的问题可能在于您从网页访问图库的方式。在您的模板中,尝试以下内容,看看是否有任何输出:
{{ page.gallery }}
有些情况下,模板中可能会忽略某些错误。
另外,我有点好奇你的页面和图库是如何相关的? Page模型是否有一个名为“gallery”的OneToOneField? Gallery是否有一个ForeignKey to Page?在后一种情况下,您可以通过以下方式访问与页面关联的图库:
{{ page.gallery_set.all }}
如果您提供了有关模型字段的其他信息,那么回答这个问题会更容易。