Django 按标签名称列出的相关帖子

Django 按标签名称列出的相关帖子,django,django-views,Django,Django Views,我想通过标签名显示相关帖子,但是我得到了一个错误,返回了多个标签-返回了2个 根据,get用于检索1项。如果有多个项目,这里可能有多个标签在一篇文章中使用,它会抛出错误 因此,您可以这样更改它: tags=Tag.objects.filter(post=post) related_item=Post.objects.filter(tag__in=tags,status=2).order_by('-created_date').distinct()[:3] 根据,get用于检索1项。如果有多

我想通过标签名显示相关帖子,但是我得到了一个错误,返回了多个标签-返回了2个

根据,get用于检索1项。如果有多个项目,这里可能有多个标签在一篇文章中使用,它会抛出错误

因此,您可以这样更改它:

 tags=Tag.objects.filter(post=post)
 related_item=Post.objects.filter(tag__in=tags,status=2).order_by('-created_date').distinct()[:3]
根据,get用于检索1项。如果有多个项目,这里可能有多个标签在一篇文章中使用,它会抛出错误

因此,您可以这样更改它:

 tags=Tag.objects.filter(post=post)
 related_item=Post.objects.filter(tag__in=tags,status=2).order_by('-created_date').distinct()[:3]

您可以像这样进行查询:

def post_detail(request,slug):
    post=get_object_or_404(Post,slug=slug)
    comments=Comment.objects.filter(post=post,reply=None,statusc=2).order_by('-date')
    comment_count=len(comments)

    related_items = Post.objects.filter(
        tag__post=post
    ).order_by('-created_date').distinct()[:3]
    # ...
或者,如果要排除当前帖子:

def post_detail(request,slug):
    post=get_object_or_404(Post,slug=slug)
    comments=Comment.objects.filter(post=post,reply=None,statusc=2).order_by('-date')
    comment_count=len(comments)

    related_items = Post.objects.exclude(pk=post.pk).filter(
        tag__post=pos
    ).order_by('-created_date').distinct()[:3]
    # ...

最好是做一个透镜。。在注释上,因为这将导致进行查询以获取注释,而使用两个单独的查询将命中数据库两次。

您可以像这样进行查询:

def post_detail(request,slug):
    post=get_object_or_404(Post,slug=slug)
    comments=Comment.objects.filter(post=post,reply=None,statusc=2).order_by('-date')
    comment_count=len(comments)

    related_items = Post.objects.filter(
        tag__post=post
    ).order_by('-created_date').distinct()[:3]
    # ...
或者,如果要排除当前帖子:

def post_detail(request,slug):
    post=get_object_or_404(Post,slug=slug)
    comments=Comment.objects.filter(post=post,reply=None,statusc=2).order_by('-date')
    comment_count=len(comments)

    related_items = Post.objects.exclude(pk=post.pk).filter(
        tag__post=pos
    ).order_by('-created_date').distinct()[:3]
    # ...

最好是做一个透镜。。在注释上,因为这将导致进行查询以获取注释,而使用两个单独的查询将两次命中数据库。

注释中的解决方案有效。我会记下你的答案的,谢谢。评论中的解决方案有效。我会记下你的答案谢谢。