运算符不存在:字符变化 = 整数

operator does not exist: character varying = integer

我正在构建一个 BlogApp 并且我正在开发一个功能,但我遇到了一个错误。

operator does not exist: character varying = integer LINE 1: ...d" = "taggit_tag"."id") WHERE "taggit_tag"."name" IN (SELECT...

我正在尝试从 Tags 中检索用户评论的所有评论,这些评论在评论的 post.

中使用

当我访问评论时,当我访问模板中的变量时,它一直显示该错误。

models.py

class Post(models.Model):
    post_user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_title = models.CharField(max_length=30)
    tags = models.TaggableManager()

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_of = models.ForeignKey(Post, on_delete=models.CASCADE)

views.py

class page(request):
    tagQuery = Tag.objects.filter(post__comment__user=request.user)
    

    #this is showing error
   
    subquery = Comment.objects.filter(post_of__tags__name__in=tagQuery)

    context = {'subquery':subquery}
    return render(request, 'page.html', context)

正在显示

The QuerySet value for an exact lookup must be limited to one result using slicing.

所以我使用了 __in 但它一直显示该错误。

任何帮助将不胜感激。谢谢

不是根据查询集本身进行过滤,而是需要根据某个字段的值进行过滤:

class page(request):
    tagQuery = Tag.objects.filter(post__comment__user=request.user)
         
    subquery = Comment.objects.filter(post_of__tags__name__in=tagQuery.values_list('name'))

    context = {'subquery':subquery}
    return render(request, 'page.html', context)