我试图添加一个注解系统到我的项目,所有的代码看起来很好,但我得到这个错误“ValueError at /的QuerySet值为一个确切的查找必须限制为一个结果使用切片”。我不知道是什么错误,但错误可能是在views.py文件。
views.py
def imagelist(request):
images = Post.objects.all()
post = get_object_or_404(Post)
comments = Comment.objects.filter(post=images)
if request.method == 'POST':
comment_form = CommentForm(request.POST or None)
if comment_form.is_valid():
contentt = request.POST.get('content')
comment = Comment.objects.create(post=images, user=request.user, content=content)
comment.save()
return HttpResponseRedirect(post.get_absolute_url())
else:
comment_form = CommentForm()
context2 = {
"images": images,
"comments": comments,
"comment_form": comment_form,
}
return render(request, 'imagelist.html', context2)
models.py
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField(max_length=160)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{}-{}'.format(self.post.title.str(self.user.username))
class Post(models.Model):
text = models.CharField(max_length=200)
posti = models.ImageField(upload_to='media/images', null=True, blank="True")
video = models.FileField(upload_to='media/images', null=True, blank="True")
user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')
liked = models.ManyToManyField(User, default=None, blank=True, related_name='liked')
updated = models.DateTimeField(auto_now=True)
created =models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.tittle)
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('content',)
4条答案
按热度按时间beq87vna1#
您需要向注解的
create
方法传递单个Post
,因为对应的字段是ForeignKey
,并且您传递的是整个查询集(Post.objects.all()
)你需要得到的只是评论应该生活的职位。
5cnsuln72#
问题是你这样写:
这里
images
是一组Post
对象,而不是单个Post
对象,因此你不能过滤它,但是你实际上 * 不 * 需要这样做。此外,在您的
Comment
模型的__str__
中还有一个小错误:但是视图本身看起来很奇怪,因为你在这里写了一个
Post
的列表,但是如果你发出POST请求,你需要知道你想把Comment
提交给哪个帖子,因此至少接受POST请求的视图需要知道要评论的Post
的主键。例如,你可以在urls.py
中编码:在该视图中,我们可以获取条目,例如使用
get_object_or_404
,并且在POST的情况下设置视图中的post
和user
对象:在您的模板中,您可以使用以下内容呈现帖子的评论:
你也可以创建一个呈现列表的视图:
在列表的模板中,可以使用以下命令渲染列表:
因此,我们在这里向
post-detail
视图发出POST请求。iaqfqrcu3#
经过4个小时的搜索,这就是我实现它的方法。我所做的就是添加这个新的视图,方法,url和html。希望这能有所帮助!
views.py
models.py (on模型)
urls.py (for 新视图,即图像详细信息)
imagelist.html(重定向到imagedetail,顺便说一句,这是一个引导按钮)
imagedetail.html(它只显示评论)
ruarlubt4#
2 -forms.py我爱你:
3 -models.py电子邮件:
4 -views.py发表于贝雷·戈伦梅利迪:
5 - post.html作者阿尔蒂纳分隔器登sonra elave埃莱:
6 -admin.py电子邮件:
7 -评论模板. html您的评论和图片等:
8 -模型德邮政联合国阿尔蒂纳elave埃莱