2015-06-21 62 views
2

我需要將SearchQuerySet()(django-haystack)對象轉換爲object.filter返回的類型。然後我需要能夠過濾它。有沒有辦法將SearchQuerySet轉換爲object.filter返回的類型? -Django

例如,如果一個配有餐廳的模型對象有SearchQuerySet(),我需要能夠做到這一點:

1)將其轉換成該objects.filter返回 2型)能夠過濾做的結果1)例如restaurant_locations= r.filter(location = "New York")

我知道這聽起來很愚蠢,但我需要這個功能。任何見解表示讚賞

+0

什麼是「SearchQuerySet」,它從哪裏來? 'Django的haystack'?請提一下。 –

+0

我不確定什麼'SearchQuerySet'是,但我的猜測是從'Queryset'繼承 – Gocht

+0

是的,SearchQuerySet()和它是django-haystack –

回答

3

一個SearchQuerySet一個QuerySet,並準確操作爲QuerySet而是基於你在索引建立的領域,而不是那些模型。

因此,如果您的模型具有字段foo而您的索引不是,則不能執行SearchQuerySet().filter(foo='thing')

如果無法字段添加到索引,絕對有模型的整個列表上的過濾器,您可以像這樣一個可怕的昂貴轉換:

sqs = SearchQuerySet().get_some_results 
qs = Mymodel.filter(id__in=[result.obj.pk for result in sqs]) 
qs = qs.filter(foo="thing") 

然而,這遍歷了SearchQuerySet以獲取所有主鍵,然後將整個列表傳回到數據庫中以獲取項目,然後您可以過濾該項目。

+0

啊我明白了。你提出好點。感謝您的答覆。 –

相關問題