0

私はコメントを表示したい、それはテンプレート内の返信です。しかし、問題があり、すべての回答には他の回答があるかもしれません。また、私は関連するすべてのコメントが保存されたモデルに動作するようにWorksCommentsのためのモデルを持っている :更新コメントを表示する方法とそれは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) 

:以下のスニペットは、私のCommentCommentReplyモデルです。

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ここでは、インスタンスの詳細を表示すると思われます。

セットアップのURL ...

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ビューでどのように表示できますか?あなた 'DetailView'も同様View''から継承 – msln

+0

@mslnに感謝します。上記work.html' 'にレンダリングすることができ、その後、ちょうどサイド部分のマークアップでコメントループを置きます。私の例では、すでに持っているものですが、コメントだけを取得&レスポンスをレンダリングするためのラインを掲示ように聞こえるので、私は完全な例を挙げました。 –

関連する問題