在Django ORM中使用Haystack结果

马蒂亚斯·舒尔茨(Matthias Scholz)

我正在使用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)

用户和个人资料具有一对一关系:

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

你知道更好的方法吗?

感谢您的帮助,Matthias

ay

您可以执行以下任一操作:

  1. 使用中的数据添加单独SearchIndexUser模型索引Profile(并使用进行查询.models(User)
  2. 将一个存储的数据字段添加到您的ProfileIndex(我假设这就是您命名的字段)中,并存储profile.user_id在您的中使用它values_list,并profile__id__in成为id__in
  3. 等待load_all支持预取相关数据(不太可能很快发生)
  4. 让你的Profile 继承User注意:我不确定Django是否每次都执行联接,或者是否在请求父字段时进行延迟加载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章