在Django中访问多对多关系

Dan*_*Dan 2 django many-to-many

我设置了几个模型如下:

画廊

图片

Gallery和Image分享了多对多的关系.

页面可以有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))
Run Code Online (Sandbox Code Playgroud)

和模板:

{% 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 %}`
Run Code Online (Sandbox Code Playgroud)

如果我尝试在IF块中输出一些文本,它就会出现,但不在循环内.

任何关于让它工作/一般整理它的建议将不胜感激.

谢谢.

Yuj*_*ita 5

如果Gallery-Image关系是多对多,我猜你m2mGallery模型上有一个字段,m2m管理器就是字段本身.可以像其他任何人一样查询经理QuerySet:model_instance.mym2mfield.filter().

如果在模型上ManyToManyField调用imagesGallery您的模板,那么您的模板将如下所示:

{% for image in page.gallery.images.all %}
    <a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

如果您ManyToManyFieldImage模型在您的模型上,则默认名称将如您所述,除非您指定了related_name在哪种情况下您使用该名称.

{% for image in page.gallery.image_set.all %}
Run Code Online (Sandbox Code Playgroud)