2013-12-13 34 views
0

我正在使用Haystack通過他們的興趣過濾userprofiles。如何使用Haystack的結果來查詢模型以將屬於這些用戶配置文件的所有選定用戶返回給我?在Django ORM中使用Haystack結果

現在我做下面的方法,但它實在是太慢了,因爲haystack_results可以條目的成千上萬的列表:

haystack_results = SearchQuerySet().raw_search('coffee AND django_ct:common.profile').values_list('pk', flat=True) 
User.objects.filter(profile__id__in=haystack_results) 

用戶和個人資料有一個OneToOne關係:

class Profile(models.Model): 
    user = models.OneToOneField(...) 

你知道更好的方法嗎?

感謝您的幫助, 馬蒂亞斯

回答

1

你可以做以下之一:(使用.models(User)和查詢)

  1. 添加一個單獨的SearchIndex索引使用從Profile的數據User模型
  2. 添加stored data field到您的ProfileIndex(我假設這就是您命名它),存儲profile.user_id。在你的values_list中使用它,profile__id__in變成id__in
  3. 等待load_all支持預取相關數據(不大可能很快發生)
  4. ProfileinheritUser有。注意:我不確定Django是否每次都進行連接,或者一旦請求父域,就會進行延遲加載。
+0

謝謝,好主意 –

相關問題