2009-08-05 123 views
3

早安所有,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) 

因此,有我用我所謂的應用程序的基本款「食譜」。
隨着中說,有我在尋找答案上的兩個問題:

  1. 我怎麼會去顯示的類別爲它的詳細信息頁面上的配方?
  2. 我怎麼會去爲它的詳細信息頁面上的配方顯示圖像?

如果我去到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}) 

在此先感謝您的幫助和理解什麼可能是一個很簡單的問題給大家!

更新:當在模型中去除附加字段,我忘了配方模型的類別字段。

+0

儘管問題在其標題中提到了ManyToMany,但我實際上並未看到任何定義的ManyToMany字段。 – Powerlord 2009-08-05 14:52:51

+0

是不是「recipe = models.ForeignKey(Recipe)」技術上是一個多對多的關係?如果不是,我爲使用的語言道歉,並很樂意改變它。 – Oubipaws 2009-08-05 14:59:38

+0

@R。 Bemrose - 我的歉意是,類別字段專門是一個ManyToMany字段,當刪除不需要的問題的額外字段時,它就停止了。 – Oubipaws 2009-08-05 15:03:17

回答

3

從我所看到的,我想你已經有了一個小的語法錯誤:

{% photo.image %} 

應改爲:

{{ photo.image }} 

{% %}符號用於Django的模板標籤。另一方面,變量用{{ }}表示法表示。

要使其具有動態性,您可以利用事實,即您的Photo模型有一個外鍵Recipe。這意味着,將有來自你使用塞回組照片加載Recipe實例的反向關係:

def details(request, slug='0'): 
    p = get_object_or_404(Recipe, slug=slug) 
    photos = p.photo_set.all() 

希望這會爲你工作。很高興看到您正在享受與Django合作!

+0

非常感謝所有的幫助,非常感謝,我的網頁上現在有圖像! – Oubipaws 2009-08-05 15:33:37