2017-01-07 23 views
0

1つのビデオを持つページを作成しています。多数のコメントと各コメントの回答 ビデオとコメントを取得できましたが、各コメントの返信は最終的には取得されませんでした。 ビューファイルでいくつかのforループを作成しましたが、テンプレートファイルでそれを取得する方法もわかりませんでした。 私はこれがあるジャンゴに1.10.4Django ORM - データ取得エラー -

models.py

class Video(models.Model): 
    title = models.CharField(max_length=120) 
    embed_code = models.CharField(max_length=500) 
    slug = models.SlugField(null=True, blank=True) 
    category = models.ForeignKey("Category", null=True) 
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    active = models.BooleanField(default=True) 
    featured = models.BooleanField(default=False) 
    free_preview = models.BooleanField(default=False) 
    share_message = models.CharField(max_length=150, default=default_share_message) 

    objects = models.Manager() 
    # activemodel = ActiveModel() 
    featuresandactive = Features() 
    class Meta: 
     unique_together = ('slug', 'category') 
    def __str__(self): 
     return self.title 

    def get_absolute_url(self): 
     try: 
      return reverse('video_detail', kwargs={'vid_slug':self.slug, 'cat_slug':self.category.slug}) 
     except: 
      return "/" 


class Comment(models.Model): 
    id = models.AutoField(primary_key=True) 
    user = models.ForeignKey(MyUser) 
    path = models.CharField(max_length=350) 
    video = models.ForeignKey(Video, null=True, blank=True) 
    text = models.TextField() 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    Timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    active = models.BooleanField(default=True) 


    objects = CommentManager() 
    def __str__(self): 
     return self.text 


class Reply(models.Model): 
    user = models.ForeignKey(MyUser) 
    comment = models.ForeignKey(Comment,null=True, blank=True) 
    text = models.TextField() 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    Timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    active = models.BooleanField(default=True) 


    objects = ReplyManager() 
    def __str__(self): 
     return self.text 

views.py

def video_detail(request, cat_slug, vid_slug): 

    cat = Category.objects.get(slug=cat_slug) 
    comments = Comment.objects.filter(video=obj) 
    replys = Reply.objects.filter(comment=comments) 

    context = { 

    "cat": cat, 
    "obj":obj, 
    "comments":comments, 
    "replys":replys, 

    } 
    return render(request, 'video_detail.html', context) 

を使用しています今

までのビューとテンプレートとの間にこだわっています別のview.py 私もこれを試しましたが、うまくいきませんでした

def video_detail(request, cat_slug, vid_slug): 

    cat = Category.objects.get(slug=cat_slug) 

    obj = Video.objects.get(slug=vid_slug) 

    comments = obj.comment_set.all() 

    Replies = Reply.objects.filter(comment_id=comments.id)) 

    context = { 

    "cat": cat, 
    "obj":obj, 
    "comments":comments, 
    "replies":replies 
    } 
    return render(request, 'video_detail.html', context) 
+0

あなたが直面している問題は何ですか?期待される行動は何ですか?また、あなたがierrorなどに直面している場合、それは何ですか? – karthikr

+0

'QuerySet'オブジェクトに属性 'id'がありません...これが最初の問題です。私はビューのループを使用する場合、それを解決することができます。どのようにしてこのデータをテンプレートファイルに入れることができましたか?私は主にYouTubeのビデオページのような単純なページを作ろうとしています。 1ビデオ..多くのコメント。各コメントには多くの返信があります –

答えて

0

IMOの場合、テンプレート内のコメントを表すことができます。あなたのテンプレートはこのように見えるかもしれません。

# your_template.html 
{% for comment in obj.comment_set.all %} 
    {{comment.user}}: {{comment.text}} 
    {% for reply in comment.reply_set.all %} 
     {{reply.user}}: {{reply.text}} 
    {% endfor %} 
{% endfor %} 

、あなたのビュー関数だけではないcommentsまたはrepliescatobjを必要とします。 select_relatedもチェックしてください。

+0

残念ながら、実際には機能しませんでした。データを解析できませんでした。 –

関連する問題