2016-09-18 2 views
0

나는 운동상의 이유로 django 1.9.9/python 3.5에서 프로젝트를하고 있습니다. 블로그 앱, 기사 앱 및 댓글 앱이 있습니다. 댓글 앱은 블로그 및 기사와 관련이 있어야합니다. 내 문제는 템플릿에 내 의견이 표시되지 않는다는 것입니다. 코멘트가 생성되고 게시물/기사와 관련이 있기 때문에 관리자가 볼 수 있기 때문에 댓글 작성 문제가 아닙니다. 그들은 단순히 내 템플릿에 표시되지 않습니다.코멘트가 post_detail보기에 표시되지 않습니다.

내 의견/models.py :

from django.db import models 


class Comment(models.Model): 

    post = models.ForeignKey('blog.Entry',related_name='post_comments', blank=True, null=True) 
    article = models.ForeignKey('articles.Article', related_name='article_comments', blank=True, null=True) 
    body = models.TextField() 
    created_date = models.DateTimeField(auto_now_add=True) 

def __str__(self): 
    return self.body 

내 commments/views.py : 설명이 있어야 할 곳에 여기

from django.utils import timezone 
from django.shortcuts import render, get_object_or_404 
from django.shortcuts import redirect 

from .forms import CommentForm 
from .models import Comment 
from blog.models import Entry 
from articles.models import Article 
from blog.views import post_detail 
from articles.views import article_detail 



def article_new_comment(request, pk): 
    article = get_object_or_404(Article, pk=pk) 
    if request.method == "POST": 
     form = CommentForm(request.POST) 
     if form.is_valid(): 
      comment = form.save(commit=False) 
      comment.article = article 
      comment.created_date=timezone.now() 
      comment.save() 
      return redirect(article_detail, pk=article.pk) 
    else: 
     form=CommentForm() 
    return render(request, 'comments/add_new_comment.html', {'form': form}) 



def blog_new_comment(request, pk): 
    post = get_object_or_404(Entry, pk=pk) 
    if request.method == "POST": 
     form = CommentForm(request.POST) 
     if form.is_valid(): 
      comment = form.save(commit=False) 
      comment.post = post 
      comment.created_date = timezone.now() 
      comment.save() 
      return redirect(post_detail, pk=post.pk) 
    else: 
     form=CommentForm() 
    return render(request, 'comments/add_new_comment.html', {'form': form}) 

그리고

, 내 post_detail.html입니다.

{% extends 'blog/base.html' %} 
{% block content %} 
    <div class="post"> 
     {% if post.modified_date %} 
      <div class="date"> 
       {{ post.modified_date }} 
      </div> 
     {% else %} 
      <div class="date"> 
       {{ post.published_date }} 
      </div> 
     {% endif %} 
     <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"> Edit Post </span></a> 
     <h1>{{ post.title }}</h1> 
     <p>{{ post.text|linebreaksbr }}</p> 
     <hr> 
     <a class="btn btn-default" href="{% url 'new_blog_comment' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"> Add Comment </span></a> 
     {% for comment in post.comments.all %} 
      <div class="comment"> 
       <div class="date">{{ comment.created_date }}</div> 
       <p>{{ comment.body|linebreaksbr }}</p> 
      </div> 
     {% empty %} 
      <p>No comments here yet</p> 
     {% endfor %} 
    </div> 
{% endblock %} 

다른 파일은 블로그/모델, 뷰처럼 나를 도와 도움이 될 알려줘 내가 문제를 생각하지 않지만, : 그들은 정확히 동일 때문에 article_detail.html을 게시하지 않습니다 거기에있다.

답변

2

게시물의 관련 댓글 이름을 명시 적으로 post_comments으로 설정했습니다. 그래서 당신처럼 접근해야 할 것입니다 :

{% for comment in post.post_comments.all %} 

이 템플릿에 post 가정되는 것은 Entry 모델의 인스턴스를 나타냅니다.

+0

예! 정말 고맙습니다. 나는 장고에서 아주 새로운데, 때로는 이런 명백한 오류를 발견 할 수 없다. –

+0

문제 없습니다. 많은 부분에서'Article'과'Entry'를 비슷한 방식으로 사용하고 있다면 (예를 들어, 둘 다'Comment's가 붙어 있습니다), 기본 모델에서 서브 클래 싱을하고'Comment''를 각각에 대한 필드가 아닌 기본 모델. https://docs.djangoproject.com/en/1.10/topics/db/models/#multi-table-inheritance를 참조하십시오. –

관련 문제