2013-12-13 35 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

谢谢,好主意 –

相关问题