早安所有,Django的多對多模板問題
我已經很長一段時間PHP程序員,但我覺得有必要把更多對Python的方向和什麼比Django的玩弄更好。
雖然在這個過程中,我來到一個停止點,我知道有一個簡單的解決方案,但我只是失蹤了 - 我如何顯示Django模板多對多的關係?
我的Django模型:(大多數字段已被刪除)
class Category(models.Model):
name = models.CharField(max_length=125)
slug = models.SlugField()
categories = models.ManyToManyField(Category, blank=True, null=True)
class Recipe(models.Model):
title = models.CharField('Title', max_length=250)
slug = models.SlugField()
class Photo(models.Model):
recipe = models.ForeignKey(Recipe)
image = models.ImageField(upload_to="images/recipes", blank=True)
因此,有我用我所謂的應用程序的基本款「食譜」。
隨着中說,有我在尋找答案上的兩個問題:
- 我怎麼會去顯示的類別爲它的詳細信息頁面上的配方?
- 我怎麼會去爲它的詳細信息頁面上的配方顯示圖像?
如果我去到Python外殼,並輸入以下,我得到的結果:
>>> photos = Photo.objects.filter(recipe=1)
>>> photos
[<Photo: Awesome Pasta>]
>>> for photo in photos:
... print "Photo: %s" % photo.logo
...
Photo: images/recipes/2550298482_46729d51af__.jpg
但是,當我嘗試像在我的模板下面,我得到一個錯誤說「無效的塊標記:'photo.image'。「
{% for photo in photos %}
{% photo.image %}
{% endfor %}
雖然,即使沒有工作,該ID還硬編碼到視圖,你會怎麼去有這個動態每個配方?
詳細信息頁面View.py片段:
def details(request, slug='0'):
p = get_object_or_404(Recipe, slug=slug)
photos = Photo.objects.filter(recipe=1)
return render_to_response('recipes/recipes_detail.html', {'p': p, 'photos': photos})
在此先感謝您的幫助和理解什麼可能是一個很簡單的問題給大家!
更新:當在模型中去除附加字段,我忘了配方模型的類別字段。
儘管問題在其標題中提到了ManyToMany,但我實際上並未看到任何定義的ManyToMany字段。 – Powerlord 2009-08-05 14:52:51
是不是「recipe = models.ForeignKey(Recipe)」技術上是一個多對多的關係?如果不是,我爲使用的語言道歉,並很樂意改變它。 – Oubipaws 2009-08-05 14:59:38
@R。 Bemrose - 我的歉意是,類別字段專門是一個ManyToMany字段,當刪除不需要的問題的額外字段時,它就停止了。 – Oubipaws 2009-08-05 15:03:17