2013-03-26 3 views
0

사용자가 장고 앱에 남긴 항목에 대한 리뷰를보고 싶습니다. Django : get() 대신 filter()에 대한 FOO_set.all()

모델

은 아주 간단하다 :

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

장고 쉘에서 for 루프를 실행하면'AttributeError : 'Item'객체에 'itemreview_set'속성이 없다는 오류 메시지가 나타납니다. 나는'a = Item.objects.all()','a [0] .itemreview_set.all()'을했는데 루프에 해당하는 것이 맞습니까? 그런데 왜 오류 메시지가 나옵니까? 템플릿에서 코드를 시도하면'{{review.review}}'가 비어 있습니다. – neurix

+0

흠 ... 왜 작동하지 않는 ... – catherine

관련 문제