1

我有一个用户配置文件搜索索引,如下所示:

class UserProfileIndex(SearchIndex, Indexable):
    text = CharField(document=True, use_template=True)
    last_name = CharField(model_attr='last_name', indexed=True)
    country = CharField(model_attr='country')
    sectors = CharField(use_template=True)
    services = CharField(use_template=True)

    def get_model(self):
        return UserProfile

    def index_queryset(self, using=None):
        """
        Used when the entire index for model is updated."""
        return self.get_model().public.all()

我正在尝试使用以下命令按 last_name 字段排序:

s = SearchQuerySet().all().order_by('last_name')

然后我回来:

Exception: No column for field 'last_name'

我在那个领域做一个过滤器没有问题。

s = SearchQuerySet().filter(last_name='Smith')

工作正常。

我猜这是一个 Whoosh 问题,但我似乎找不到解决方法。

4

1 回答 1

2

不知道你是否已经解决了这个问题,但为了其他遇到这个问题的人,我遇到了同样的问题,只是想通了。

如果您在 Haystack 中的某个字段上使用 order_by 并且 Whoosh 是您的后端,则您排序的字段必须存在于您的所有索引中。不只是您感兴趣的那个。过滤器不会受到相同要求的影响,这就是该查询通过的原因。

于 2013-10-23T14:29:50.273 回答