2017-11-21 2 views
-1

私はモデルを持っていますそれのためのニュースとモデルのコメント。 それは正常に動作します。ビューでadmin.pyコメントのためのDjangoコメントモデル

from .models import News, Comment 
class NewsAdd(admin.StackedInline): 
    model = Comment 
    extra = 0 

class newseAdmin(admin.ModelAdmin): 
    inlines = [NewsAdd] 

admin.site.register(News, newseAdmin) 

class News(models.Model): 
    title = models.CharField(max_length=100) 
    text = models.TextField() 
    date = models.DateTimeField(auto_now_add=True) 

class Comment(models.Model): 
    text = models.TextField() 
    for_news = models.ForeignKey(News) 

def showNews(request, news_id=1): 
    news = Article.objects.get(id=article_id) 
    comments = Comment.objects.filter(comments_news_id=article_id) 
    return render(request, 'page.html', {'news': news, 'comments': comments}) 

どのように私はコメントに返信する機会を追加することができますか?コメントのカスケードコメントは何でしょうか。

+0

私はどんな事を理解していないので、文法や英語力を向上してみてください。)、あなたはコメントをリプレイを作成追加する方法を意味しています?? –

+0

@mohammedqudahに同意しても、それほど明確ではありません。質問を書き直してください。 –

+1

あなたの質問はあまり明確ではありませんが、コメントツリーを作成しようとしているようです。インスピレーションのために "Django tree model"を探しましょう。それらを使用する必要はありませんが、実装の出発点となります。 – dmvrtx

答えて

-1

あなたのコードが行っていることから質問が明らかではありませんが、私はあなたがニュースのすべてのコメントを取得しようとしていると推測しています。

だから、あなたのビュー機能で、あなたはこの言う必要があります。これはあなたがやろうとしているものではない場合

def showNews(request, news_id=1): 
    headline_news = Article.objects.select_related().get(id=article_id) 
    headline_news_comments = headline_news.news_set.all() 
    return render(request, 'page.html', {'news': headline_news , 'comments': headline_news_comments }) 

を、あなたが後にしているものを詳しく説明してください。

0

私の知る限り、すでに投稿されたコメントをユーザーが再生できるようにしようとしています。ここで

は、あなたが何をする必要があるかです:

models.py

class Comment(models.Model): 
    text = models.TextField() 
    for_news = models.ForeignKey(News) 
    reply_to = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE, related_name='replies') 

今、あなたは、ユーザーがコメントIDまたはあなたがコメントを識別できるものを提供することにより、特定のコメントに返信させることができます。

テンプレートにはJavaScriptコードが必要です。ユーザーがコメントの返信ボタンをクリックするたびに、親コメントIDを含む非表示フィールドを追加し、ビューにIDが渡されたかどうかを確認するだけです。

簡単な例:

views.py

replied_comment = request.POST.get('your comment id input name') 

try: 
    comment_object = Comment.objects.get(pk=replied_comment) 
except: 
    comment_object = None 

comment = Comment(text="Some Text", for_news=news_object, reply_to=comment_object) 
comment.save() 
関連する問題