2015-12-12 61 views
1

我試圖讓到10個對象,如:如何在不改變類型的情況下從SearchQuerySet獲取n個搜索對象?

q_auth = SearchQuerySet().filter(content=validate_query) 
q_auth = q_auth[:10] 
print type(q_auth) 

我想輸出是:<class 'haystack.query.SearchQuerySet'>但我得到的是<type 'list'>

有人可以幫我嗎?

+0

你爲什麼期望這個類型是'SearchQuerySet'?這是一個列表後續 –

+0

@RohitJain呃..我可以看到OP來自哪裏:[文檔](https://docs.djangoproject.com/en/1.9/topics/db/queries/#limiting-querysets)說它仍然是一個查詢集 – Pynchia

+0

@Pynchia嗯,我明白了。 –

回答

0

我試過類似像你的代碼的東西,但得到這樣的輸出:

<class 'django.db.models.query.QuerySet'> 

基於你有什麼,我想你可以嘗試這樣的:

print type(q_auth[0]) 
+0

我也是,我不能重現'' – Pynchia

+0

@Pynchia我認爲應該有更多的信息。 – shellbye

0

看着source,你會看到q_auth[:10]返回一個結果列表。 A SearchQuerySet是懶惰的,並且可能沒有獲得所有結果,除非您使用分片檢索它們,即q_auth[:10]

只要做到:

first_results = q_auth[:10] 

和訪問與結果:

first_results[0] 

我建議不要這樣做:

q_auth = q_auth[:10] 

因爲你SearchQuerySetq_auth情況下也不會可用於稍後檢索更多結果。

+0

它正在轉換類型。我想要的類型是''但它給了我一個列表 – Subhajit

+0

'q_auth'已經是這種類型了。切片返回一個列表。這是如何實施的。事實上,這很有意義。請嘗試我的答案中的代碼。爲您的切片結果使用不同的名稱,並且'q_auth'保持其類型。 –

+0

我在你的答案中嘗試了代碼,但它改變了類型。所以我改變了我的代碼來使用列表而不是搜索對象。 – Subhajit

相關問題