Django Taggit 错误 "too many SQL variables" 我如何进行限制查询?

Django Taggit error "too many SQL variables" how can i do limit query?

你好,我有一个壁纸网站。我正在使用 taggit。我有 20 万个标签和 2 万张墙纸。

我想在这样的视图中使用相关的壁纸

def detail(request,slug):

    wallpaper = get_object_or_404(Wallpapers, slug = slug)
    category = Category.objects.all()
    similar_posts = wallpaper.tags.similar_objects()[:20]
    random.shuffle(similar_posts)
    return render(request, "detail.html", {"wallpaper": wallpaper, "category": category, "similar_posts": similar_posts,  })

我接受了 "too many SQL variables" 错误。

示例壁纸标签: 动漫、水、雨

15k+ 壁纸有 动漫 标签

如何限制或过滤查询此相关壁纸项目?

我找到了这样的解决方案

 similar_posts = wallpaper.tags.similar_objects()[:20]
 random.shuffle(similar_posts)

更改为;

 similar_posts = Wallpapers.objects.filter(tags__name__in = [wallpaper.tags.names()]).order_by('?')[:20]