0

我想顯示評論,它是模板中的回覆。但有一個問題,每個答覆可能有其他答覆。以下代碼段是我CommentCommentReply型號:如何顯示評論和它在django模板中的回覆?

class Comment(models.Model): 
    author = models.ForeignKey(Profile, related_name="c_sender", on_delete=models.CASCADE, unique=False) 
    comment = models.CharField(max_length=500, unique=False) 
    created_date = models.DateTimeField(auto_now_add=True) 
    edited_date = models.DateTimeField(blank=True, null=True) 

    def __str__(self): 
     return self.comment 

    @property 
    def replys(self): 
     return CommentReply.objects.filter(comment_id=self) 


class CommentReply(models.Model): 
    comment_id = models.ForeignKey(Comment, related_name='sender', on_delete=models.CASCADE) 
    reply_id = models.ForeignKey(Comment, related_name='reply', on_delete=models.CASCADE) 

更新時間: 我也有WorksComments那每一個相關評論上班保存有模型的模型。

class WorkComment(models.Model): 
    work_id = models.ForeignKey(Work, on_delete=models.CASCADE, related_name='e_exercise', unique=False) 
    comment_id = models.ForeignKey(Comment, related_name='e_comment', unique=False) 

以下代碼段是我的看法:

comments = WorkComment.objects.filter(work_id=work).all() 
return render(request, 'work.html', {'comments': comments}) 

我的問題是如何顯示的意見和它的答覆中它,每一個回答可能有,我想顯示他們太多其他一些replyies。

+0

什麼是您的看法是什麼樣子? –

+0

我更新了它並添加了視圖。 – msln

回答

0

第一件事第一......把它放在你的書籤; https://ccbv.co.uk/

你會想要一個Detail View這裏我懷疑爲了顯示一個實例的細節。

設置網址...

from django.conf.urls import url 

from work.views import WorkDetailView 

urlpatterns = [ 
    url(r'^(?P<id>[-\d]+)/$', WorkDetailView.as_view(), name='work-detail'), 
] 

和一個視圖;

from django.views.generic.detail import DetailView 
from django.utils import timezone 

from work.models import Work 

class WorkDetailView(DetailView): 

    model = Work 

    def get_context_data(self, **kwargs): 
     context = super(WorkDetailView, self).get_context_data(**kwargs) 
     context['comments'] = WorkComment.objects.filter(work_id=self.object.id).all() 
     return context 

然後簡單的觀點可能是work/work_detail.html

<h1>{{ object.title }}</h1> 
<p>{{ object.content }}</p> 
<h2>Comments</h2> 
{% for comment in comments %} 
    {{ comment }} 
{% endfor %} 
+0

它不是一個單獨的頁面。我想在'work.html'頁面的一部分顯示註釋。我的視圖繼承自View。我如何在從View繼承的基於Class_Based的視圖中顯示它們?謝謝 – msln

+0

@msln'DetailView'也從'View'繼承。上面的代碼可以渲染爲'work.html',然後將註釋循環放入側面部分的標記中。這聽起來像我的例子是你已經得到的,但你只是張貼線來獲得評論和迴應,所以我給了一個完整的例子。 –