我正在使用Haystack根据他们的兴趣过滤用户配置文件。如何使用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(...)
你知道更好的方法吗?
感谢您的帮助, 的Matthias
答案 0 :(得分:2)
您可以执行以下操作之一:
SearchIndex
中的数据(并使用User
查询)Profile
模型添加单独的.models(User)
索引
ProfileIndex
添加stored data field(我假设你的名字是这样的),存储profile
' s {{1 }}。在.user_id
中使用它,values_list
变为profile__id__in
。load_all
支持预取相关数据(不太可能很快发生)id__in
获取Profile
inherit。注意:我不确定Django每次都进行连接,或者一旦请求父字段就进行延迟加载。