【发布时间】:2012-11-30 09:47:26
【问题描述】:
我有一个非常通用的视图/模板来显示给定模型的查询集的内容。
我在 12 个地方使用了 12 个不同的查询集,现在我想在其中集成 haystack 搜索,但我不能,因为 SearchQuerySet 与模板中的 QuerySet 不匹配。
我使用普通的查询集
{%for obj in qs%}
{{obj.foreign_key.name }}
{%endfor%}
使用 SearchQuerySet 我需要这样做
{%for obj in qs%}
{{obj.object.foreign_key.name}}
{%endfor%}
这基本上破坏了我现在知道查询集来自哪里的通用模板和视图。
我想要一种让 searchqueryset 表现得像普通查询集的方法,我知道:
- 虽然我会维持秩序,但我会输掉分数
- 我需要执行 load_all() 来获取整个对象
关于如何保持模板通用但接受 SearchQuerySet 或将 SearchQuerySet 转换为 QuerySet 的任何提示?
【问题讨论】:
-
如何从视图中返回一个列表,例如:[obj.object for obj in qs],那么模板中的 forloop 应该仍然可以工作
-
这将实例化整个查询集,而且我会失去分页,我需要返回一个类似查询集的对象
标签: django solr django-queryset django-haystack