2015-02-11 21 views
0

我正在構建一個用於顯示事件的應用程序。在Django模板上列出子類別的最佳方法(ManyRelatedManager not Iterable)

事件模型是這樣的:

class Event(models.Model): 
    name = models.CharField(max_length=255) 
    venue = models.ForeignKey('venues.Venue') 
    categories = models.ManyToManyField('categories.Category') 
    description = models.TextField() 

    def __str__(self): 
     return self.name 

注:該事件可以有多個類別。

類別模型是這樣的:

class Category(models.Model): 
    name = models.CharField(max_length=255) 
    parent_category = models.ForeignKey('self', null=True, blank=True) 

    def __str__(self): 
     return self.name 

注:主要類別將被定義爲沒有「parent_category」

這讓我有等級的種類這樣的分類:

Music 
    Vallenato 
    Rock Latino 
    Cumbia 

現在在Django模板我想提出一個清單關閉所有的事件對於給定主要類別(如listview)。

使用相同的例子,該頁面將包括:與所有的音樂活動的概述

-A列表中,這樣的人可以得到事件的簡短,然後點擊一個拿到的細節給定事件。

當我發送事件查詢集到模板是這樣的:

events = Event.objects.all().order_by('name') 

我試圖遍歷所有的事件類別,有這樣的事情:

{% for event in events %} 
    {% for category in event.categories %} 

我得到ManyRelatedManager不可迭代錯誤。

列出模板上給定事件的所有子類別的最佳方法是什麼?

如何在模板或視圖級別處理此問題? (以最好的爲準)

回答

1

就像錯誤說的那樣,它是一個管理者,所以你需要使用管理器方法:{% for category in event.categories.all %}

+0

謝謝,我編輯了模型,以便它說類別而不是類別,我會嘗試使用.all並回復給您。 – edu222 2015-02-11 22:42:28

+0

就是這樣!我錯過的全部都是 – edu222 2015-02-11 22:51:49

相關問題