[英]How to get comment for the particular Blog Post in Django?
#Models.py
#BlogPost Model
class BlogPost(models.Model):
POST_CATEGORY = (
('Education','Education'),
('Tech','Tech'),
('Automobile','Automobile'),
('Other','Other')
)
title = models.CharField(max_length=150)
thumbnail = models.ImageField(upload_to='Blog Thumbnail')
category = models.CharField(max_length=100, choices = POST_CATEGORY )
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
slug = models.CharField(max_length=200, unique=True, null=True)
tags = models.CharField(max_length=150, null=True, blank=True)
writer = models.ForeignKey(User,on_delete=models.CASCADE,null=False)
def __str__(self):
return self.title
#BlogComment Model
class BlogComment(models.Model):
post = models.ForeignKey(BlogPost,on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
comment = models.TextField()
parent = models.ForeignKey('self',on_delete=models.CASCADE,null=True)
timestamp = models.DateTimeField(auto_now_add=True)
#Views Code
def blogPost(request, slug):
post = BlogPost.objects.filter(slug=slug)
'''How to get comment for particularly this post'''
comments = BlogComment.objects.filter(post=post) # It is giving a wrong answer
'''The error I am getting
ValueError: The QuerySet value for an exact lookup must be limited to one result using slicing.'''
print(comments)
context = {
'Post':post,
'Comments':comments
}
return render(request,'blogpost.html',context)
如何獲得這篇博文的特別評論? 我得到的錯誤 - “ValueError:精確查找的 QuerySet 值必須限制為使用切片的一個結果。”
objects.filter () 返回一個查詢集。 filter 方法需要一個 BlogPost 實例(獲取 id)或一個整數 id,因為 objects.filter(post= pk )
使用 objects.get(),這樣你得到一個 BlogPost 的實例,而不是一個查詢集:
post = BlogPost.objects.get(slug=slug)
comments = BlogComment.objects.filter(post=post)
補充:
您還可以通過不同的方式處理帖子不存在時可能發生的異常。 其中之一是返回 Http404,這是最簡單的方法:
from django.shortcuts import get_object_or_404
post = BlogPost.objects.get_object_or_404(slug=slug)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.