2014-03-13 2 views
0

내가 코멘트 한 모든 이야기에 사용자가 올린 모든 댓글의 목록을 표시하려고합니다. 현재 내가이 있습니다두 개의 쿼리 세트를 동시에 루프하는 방법은 무엇입니까?

{% for story in all_user_stories %} 
{{ story.title }} 
{{ story.comments.all }} 
{% endfor %} 

이야기와 코멘트 필드에 관련된 이름이 "의견"을 주석 테이블의 외래 키 코멘트 데이터베이스 테이블이 있습니다. 문제는 "story.comments.all"행이 사용자가 특정 스토리에 대해 작성한 주석 대신에 사용자가 주석 처리 한 모든 스토리에 대한 모든 코멘트를 수신했다는 것입니다. 나는 문서를 살펴 보았고, 이것을 할 수있는 적절한 방법이나 좋은 방법을 찾지 못한다.

누군가는 내가 어떻게 좋은 깨끗한 방법으로 이것을 할 수 있는지 아는가? 코멘트 테이블에서 다른 쿼리 세트를 생성해야합니까?이 경우 두 번 반복하는 방법은 무엇입니까? 필자는 사람들이 이것을하는 몇 가지 방법을 보았지만 그때의 querysets는 여기에없는 동일한 번호를 가지고 있습니다.

업데이트 :

class Story(models.Model): 
    user = models.ForeignKey(User) 
    date_added = models.DateTimeField(auto_now_add=True) 
    date_modified = models.DateTimeField(auto_now=True) 
    title = models.CharField(max_length=150) 
    description = models.CharField(blank=True, null=True, max_length=2000) 
    story_text = models.TextField() 
    category = models.ForeignKey(Category, blank=True, null=True) 

class Comment(models.Model): 
    user = models.ForeignKey(User) 
    date_added = models.DateTimeField(auto_now_add=True) 
    date_modified = models.DateTimeField(auto_now=True) 
    emailOnReply = models.NullBooleanField(blank=True, null=True) 
    comment_text = models.TextField() 
    story = models.ForeignKey(Story, related_name="comments") 

    def __unicode__(self): 
     return self.comment_text 

코드에로 다스 려 코멘트 필드 메신저 주석 테이블에서 이야기 모델 필드에 related_name 인수이며,이 반환 :

이 이야기와 코멘트 모델입니다 코멘트는 루프에 대한 이야기와 관련된 주석 대신 모든 것을 반환합니다. 사용자 모델은 djangos 인증 시스템의 사용자 모델입니다.

<table class="table table-hover"> 
    <thead> 
     <tr> 
     <th>Title</th> 
     <th>Date added</th> 
     <th>Last modified</th> 
     <th>Publicity</th> 
     <th>Comments</th> 
     <th>Votes</th> 
     <th>Views</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
    {% for story in all_user_story %} 
     <td><a href="/story/display/{{ story.id }}"> {{ story.title }}</td> 
     <td>{{ story.date_added }}</td> 
     <td>{{ story.date_modified }}</td> 
     <td>{{ story.story_access_level }}</td> 
     <td> 
      {{ story.comments.all }} <----- How to only display the comment(s) related to this specific story the for loop is looping through 
     </td> 
     <td><img src="{% static 'images/arrow_up.png' %}"> {{ story.votes }} <img src="{% static 'images/arrow_down.png' %}"></td> 
     <td> 
      {% if story.views %} 
      {{ story.views }} 
      {% else %} 
      0 {% endif %} 
     </td> 
     <td> <a href="/user/{{ user }}/story/{{ story.id }}/edit">Edit story</a></td> 
     </tr> 
    {% endfor %} 
    </tbody> 
    </table 

답변

0

당신은 "관련 관리자"를 사용하여 이야기에 대한 관련 의견을 조회 할 수 있습니다 (장고 문서에 here에 대한 자세한 정보) :

이 관련 HTML 코드입니다.

코드는 다음과 같을 것이다 :

{% for story in all_user_stories %} 
    {{ story.title }} 
    {% for comment in story.comment_set.all %} 
    {{ comment.comment_text }} 
    {% endfor %} 
{% endfor %} 

또한 특정 이야기에 대한 코멘트를 찾을 때 story.comment_set 대신 "관련 이름"story.commments을 사용할 수 있어야한다 :

{% for story in all_user_stories %} 
    {{ story.title }} 
    {% for comment in story.comments.all %} 
    {{ comment.comment_text }} 
    {% endfor %} 
{% endfor %} 
+0

정확히 무슨 일을했는지는 모르겠지만 작동하지 않는다면 더 명확하게 보여주기 위해 원본 게시물을 업데이트 할 수 있습니다. 외래 키는 _set을 사용하지 않는 이유가되는 다른 방법입니다. –

+0

좋아, 모델을 정의하는 방법에 대한 자세한 내용으로 질문을 업데이트 해 주실 수 있습니까? – HAL

+0

질문을 업데이트 할 것입니다. –

관련 문제