2011-05-13 79 views
2

一對多的關係我已經建立了幾個模型如下:訪問到許多在Django

畫廊

圖片

畫廊和圖像共享一個多對多的關係。

頁面可以有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內的一些文本塊,它出來確定的,但不是在循環中。

任何建議讓它的工作/一般整理這將不勝感激。

謝謝。

回答

4

如果Gallery-Image關係是多對多我猜你有你的Gallery模型,其中M2M管理器是場本身的m2m場。經理可以像其他任何QuerySetmodel_instance.mym2mfield.filter()查詢。

如果您ManyToManyField被呼籲Gallery模型images,你的模板應該是這樣的:

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

您的問題可能在於您從頁面訪問圖庫的方式。在您的模板,你可以試試下面,看看你得到任何輸出:

{{ page.gallery }} 

在有些情況下某些錯誤可以在模板中被忽略的情況。

此外,我有點好奇你的頁面和圖庫是如何相關的? Page模型是否有一個名爲「gallery」的OneToOneField? Gallery是否有頁面的外鍵?在後一種情況下,你會獲得通過與頁面相關的畫廊:

{{ page.gallery_set.all }} 

它會更容易,如果你提供的關於您的模型領域的一些額外的信息來回答這個問題。