2014-09-09 11 views
0

Я разработал упрощенную систему проводки и комментариев, где каждый объект посткомментации связан с соответствующим объектом newpost с использованием внешнего ключа. Моя проблема заключается в том, что комментарии в шаблоне не отображаются под соответствующим объектом newpost. Например, если в каждом сообщении имеется 3 новых адреса и 3 комментария, в общей сложности 9 комментариев, шаблон отображает все 9 комментариев под каждым 3 сообщениями (всего 27 комментариев). Мне нужна помощь в выяснении того, как правильно связать каждый комментарий с соответствующим сообщением, а не просто прокручивать поле «allcomments» под каждым сообщением. Спасибо за любую помощь и подсказки.Django: Как связать комментарий с соответствующим OP в HTML-шаблоне?

postset = pagename.newpost_set.all().order_by('-postdate') #i use this to get a queryset of all posts on the selected page and order them so newest posts show up at the top 
allposts = newpost.objects.filter(newposttag=‘userpage’) #i use this to get a queryset of all posts on the corresponding user’s page for the next line, this might seem redundant after the above, but it works because the postset is what I end up using in the template. 
allcomments = postcomment.objects.filter(commenttag=allposts) #i use this to get a queryset of all the comments from each post in the ‘allposts’ queryset 

Вот мой шаблон для отображения вышеуказанной информации, что я приобрел

{% for postset in postset %} 
    <br>{{ postset.postcontent }} {{postset.postdate }} - {{ postset.postlikes }} likes <a href="/enterlink/comment">Comment</a></br> 
    {% for allcomments in allcomments %} 
    <br> {{ allcomments.comment }} {{allcomments.postcommentdate }} - {{ allcomments.commentlikes}} 
{% endfor %} 
{% endfor %} 

ответ

1

Как об обновлении шаблона следующим образом:

{% for post in postset %} 
    <br>{{ post.postcontent }} {{post.postdate }} - {{ post.postlikes }} likes <a href="/enterlink/comment">Comment</a></br> 

    {% for comment in post.postcomment_set.all %} 
     <br> {{ comment.comment }} {{comment.postcommentdate }} - {{ comment.commentlikes}} </br> 
    {% endfor %} 
{% endfor %} 

Таким образом, вы перебрать ваши сообщения и для каждого сообщения вы получаете комментарии, связанные с этим сообщением, через выражение post.postcomment_set.all.

Пожалуйста, дайте мне знать, если это вам поможет.

ps: Я не думаю, что вам нужны эти три запроса в вашем представлении.

+0

Можете ли вы вкратце объяснить логику этого? Я изо всех сил пытаюсь понять, как это принципиально отличается от того, что у меня было до этого, и почему оно решило проблему. Спасибо – EazyC

+0

В вашем шаблоне вы запускаете внутренний цикл for на 'allcomments' для каждого сообщения. Это была главная проблема. Кстати, я просто редактировал имена переменных, чтобы сделать их более понятными. – iuysal

+0

А также, я предполагаю, что в вашей модели комментариев у вас есть поле типа 'post = models.ForeignKey (newpost)' – iuysal

Смежные вопросы