2015-01-10 6 views
1

의 수는 내 모델입니다 :장고 하나를 여기에 개체

class Story(models.Model): 
    writer = models.ForeignKey(UserProfile, blank=False, null=True) 
    . 
    . 
    . 

class Comment(models.Model): 
    on_story = models.ForeignKey(Story, related_name="comments", blank=False, null=False) 
    . 
    . 
    . 

내가 특정 스토리 관련 의견 수,이보기에 그 주입 어떻게합니까?

답변

-1

QuerySet.count부터 comments까지의 특성 (관련 이름)을 사용할 수 있습니다.

사용하여 뷰 기능에서 다음

comment_count = specific_story.comments.count() 
# do something with `comment_count` 

UPDATE을 사용 .comments.count 템플릿 : 여러 이야기가있는 코멘트 수를해야하는 경우

{% for story in stories %} 
    ... {{ story.comments.count }} ... 
{% endfor %} 
+0

나는 이런 내보기 구현하는 경우 : 데프 지수 (요청) : \t story_list = Story.objects.order_by ("- date_published")를 . . . 컨텍스트 = { 'stories': stories} return render (요청, 'stories/index.html', 컨텍스트) 템플릿의 개별 스토리에 대한 의견 수를 얻으려면 어떻게해야합니까? – Hello

+0

@Lumsum, 귀하의 의견을 읽은 후 답변을 업데이트했습니다. 그것을 확인하시기 바랍니다. – falsetru

+0

오 고맙습니다! 고맙습니다! 고맙습니다!!! – Hello

3

, 나는 강력하게 사용하는 것이 좋습니다 annotations 대신 comments.count()을 호출하십시오.

from django.db.models import Count 

stories = Story.objects.order_by("-date_published").annotate(comment_count=Count('comments')) 

이렇게하면 각 수에 대해 별도의 쿼리 대신 조인을 사용하여 데이터베이스에서 COUNT을 수행하여 N + 1에서 1로만 쿼리를 줄일 수 있습니다. 카운트는 다음과 같이 액세스 :

{% for story in stories %} 
    {{ story.comment_count }} 
{% endfor %} 
관련 문제