如何在W((django)中使用values_list?
问题描述:
喜对不起,我可怜的英语如何在W((django)中使用values_list?
为什么鹡鸰搜索返回PostgresSearchResult搜索后?
我想PageQuerySet
像Django的Postgres的搜索后台,因为我不能搜索之后使用values_list
我想页面路径的列表(因为我想找到的网页父母(分类页)由路径)
,我不能使用values_list搜索之前,因为它不工作
我知道,我可以用for循环,但是这需要大约5秒钟EAC^h运行
我的代码是非常简单的:
Django的方式:#Work
ProductPage.objects.filter(title__search="phone").values_list('path')
鹡鸰方式:#NotWork :(
ProductPage.objects.search(query).values_list('path')
答
这是一个有点反直觉,但你需要始终把search(query)
通话最后。
读Search docs,你会看到一个提示:
- 的
search()
方法将你的QuerySet
转换成一个实例鹡鸰的SearchResults
类之一的 (取决于后端)。 这意味着您必须在致电search()
之前执行过滤。
这意味着,要获得大部分等于组的结果,你需要做以下几点:
query = 'phone'
ProductPage.objects.values_list('path').search(query)
注意search
是最后一次通话。搜索仍将按预期工作,我也在我的设置上测试了类似的情况。
values()
,values_list()
,filter()
都返回查询集,其中的鹡鸰search()
需要一个QuerySet并返回一个非QuerySet对象。实际的数据库querying only happens when you iterate (or use) a QuerySet所以QuerySet函数的顺序并不重要。