【问题标题】:Using a Haystack Result within Django ORM在 Django ORM 中使用 Haystack 结果
【发布时间】:2013-12-13 17:07:46
【问题描述】:

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

你知道更好的方法吗?

感谢您的帮助, 马蒂亚斯

【问题讨论】:

    标签: django orm django-haystack searchqueryset


    【解决方案1】:

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

    1. 使用来自Profile 的数据添加单独的SearchIndex 索引User 模型(并使用.models(User) 进行查询)
    2. stored data field 添加到您的ProfileIndex(我假设您就是这样命名的),存储profile.user_id。在你的values_list 中使用它,profile__id__in 变成id__in
    3. 等待load_all 支持预取相关数据(不太可能很快发生)
    4. User 获取您的Profile inherit。注意:我不确定 Django 是每次都加入,还是在请求父字段后延迟加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多