我想搜索句子中的每个单词并将其放入result['post']词典
当然,这段代码只会寻找最后一个查询

queries = querystring.split()
    for query in queries:
        results['posts'] = Post.objects.filter(text__icontains=query)


我尝试了appendextend和很多其他方法,但是没有按预期工作。

编辑更新:
我也试过

    count = {}
    results = {}
    post_results = []
    queries = querystring.split()
    for query in queries:
        post_results.append(Post.objects.filter(text__icontains=query))
    results['posts'] = post_results
    count['posts'] = results['posts'].count()


但这会导致另一个错误count() takes exactly one argument (0 given)

Error Image

同样,Post.objects.filter(text__icontains=query)这行返回一个查询集值,而Queryset type of django似乎没有附加值。是否有自己的附加类功能?如果是这样,那不会改变它的queryset类型为list。使用temp变量(如post_results = [])更改为列表。

我们可以将该列表改回queryset吗?如果可以的话,那将行得通。

最佳答案

我猜想原因是每个循环中results['posts']值都被覆盖。

怎么样像这样更改代码

queries = querystring.split()
tmp = []
for query in queries:
        tmp.append(Post.objects.filter(text__icontains=query))
results['posts'] = tmp

关于python - Django追加<queryset>以使用过滤器搜索句子中的每个单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48841782/

10-15 17:43