【问题标题】:operator does not exist: character varying = integer运算符不存在:字符变化 = 整数
【发布时间】:2021-11-15 05:43:19
【问题描述】:

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

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

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

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

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)

它正在显示

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

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

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

【问题讨论】:

    标签: python django django-views django-queryset


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 2011-07-03
      • 2014-06-30
      • 2015-10-02
      • 2020-03-19
      • 1970-01-01
      • 2017-06-23
      • 2012-02-06
      • 1970-01-01
      相关资源
      最近更新 更多