2013-10-08 27 views
1

我試圖在一個視圖中創建一個包含所有模型類別和相關條目的頁面。我遵循了這裏django class based views for all categories with all entires和這裏的Get all categories and items in category的提示,但我仍然無法實現。有任何想法嗎 ?django視圖 - 所有類別和所有條目

- 模型

class Category(models.Model): 
    name = models.CharField(max_length=50) 

    def __unicode__(self): 
     return self.name 

class Feed(models.Model): 
    name = models.CharField(max_length=100) 
    url = models.CharField(max_length=100) 
    category = models.ForeignKey(Category) 
    user = models.ManyToManyField(User) 

    def __unicode__(self): 
     return self.url 

- 觀點

def category_page(request): 
    object_list = Category.objects.all() 
    context = {'object_list': object_list,} 
    return render(request, 'category_page.html', context) 

- 模板category_page.html

{% block content %} 
{% for category in object_list %} 
    {{ category.name }} 
    {% for entry in category.entry_set.all %} 
     {{ category.name}} 
    {% endfor %} 
{% endfor %} 
{% endblock content %} 

我越來越顯示所有類別,但沒有條目列表。

感謝 -M

回答

0

這裏

{% for entry in category.entry_set.all %} 
    {{ category.name}} 
{% endfor %} 

應該

{% for entry in category.feed_set.all %} 
    {{ entry.name}} 
{% endfor %} 

{{ category.name}}的for循環的entries就是顯示不正確的名稱中。

另外,什麼是entry_set?如果您未指定related_name,則需要使用小寫模型名稱來獲取相關對象(本例中爲feed_set)。

事情是這樣的:

category.feed_set.all 

總結起來,

{% block content %} 
{% for category in object_list %} 
    {{ category.name }} 
    {% for entry in category.feed_set.all %} 
     {{ entry.name}} 
    {% endfor %} 
{% endfor %} 
{% endblock content %} 

你可以閱讀更多的related objects here

0

如果這是你的實際代碼,這個問題是在變量名的模板。

{% for category in object_list %} 
    {{ category.name }} 
    {% for entry in category.feed_set.all %} 
     {{ entry.name}} 
    {% endfor %} 
{% endfor %} 

具體而言,您是指entry_set,但由於型號名稱爲Feed,而不是Entry和你沒有申報非默認related_name的說法,這不是對關係的反向名稱。

此外,您正在重新打印您的類別名稱而不是Feed實例的名稱。

相關問題