2013-03-26 43 views
0

我想查看用戶在我的Django應用程序中留下的項目的評論。Django:FOO_set.all()for filter()而不是get()

這些模型很簡單:

models.py

class Item(models.Model): 
    name = models.CharField(_('Item'), max_length = 100,) 
    ... 

class ItemReview(models.Model): 
    item = models.ForeignKey(Item) 
    review = models.CharField(max_length = 140) 
    ... 

在我template我列出我傳遞給template從視圖功能items

items = Item.objects.filter(name = ...) 

在我的模板中,我列出瞭如下項目:

{% for item in items %} 
    <td>{{ item.name }}</td> 
{% endfor %} 

如何在同一個循環中顯示reviews?我已經嘗試過FOO_set.all,但它似乎不適用於過濾器功能。

這個問題看起來很簡單,但我無法理解它。

回答

2
class Item(models.Model): 
    name = models.CharField(_('Item'), max_length = 100,) 
    ... 

    def reviews(self): 
     return ItemReview.object.filter(item=self) 

class ItemReview(models.Model): 
    item = models.ForeignKey(Item) 
    review = models.CharField(max_length = 140) 


{% for item in items %} 
<td> 
    {{ item.name }} 

    {% for review in item.reviews %} 
     {{review}} 
    {% endfor %} 
</td> 
{% endfor %} 
+0

當我嘗試在Django的殼循環,我得到'AttributeError的錯誤信息:「項目」對象有沒有屬性「itemreview_set''。我做了'a = Item.objects.all()','a [0] .itemreview_set.all()',它應該等價於你的循環,對嗎?但是,爲什麼我會收到錯誤消息呢?當我嘗試模板中的代碼時,「{{review.review}}」爲空。 – neurix 2013-03-26 14:23:25

+0

嗯...爲什麼它不工作... – catherine 2013-03-26 14:33:51