首页 > 解决方案 > 运算符不存在:字符变化 = 整数

问题描述

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

运算符不存在:字符变化 = 整数第 1 行:...d" = "taggit_tag"."id") WHERE "taggit_tag"."name" IN (SELECT...

我正在尝试检索用户Tags在评论帖子中使用的所有评论。

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

模型.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)

视图.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)

它正在显示

精确查找的 QuerySet 值必须限制为使用切片的一个结果。

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

任何帮助将非常感激。谢谢你

标签: pythondjangodjango-viewsdjango-queryset

解决方案


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

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)

推荐阅读