2017-11-11 74 views
0

喜對不起,我可憐的英語如何在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') 

回答

1

這是一個有點反直覺,但你需要始終把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函數的順序並不重要。

相關問題