2015-12-12 65 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

相关问题