Django Haystack和嗖嗖声:排序时没有列异常

Django Haystack和嗖嗖声:排序时没有列异常,django,django-haystack,whoosh,Django,Django Haystack,Whoosh,我有一个userprofile搜索索引,如下所示: 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

我有一个userprofile搜索索引,如下所示:

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()
我正在尝试使用以下命令按姓氏字段进行排序:

s = SearchQuerySet().all().order_by('last_name')
然后我回来:

Exception: No column for field 'last_name'
我在这个领域做一个过滤器没有问题

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


我猜这是一个令人兴奋的问题,但我似乎找不到解决办法。

不确定您是否已经解决了这个问题,但为了其他遇到这个问题的人,我遇到了同样的问题,并且刚刚解决了它


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

谢谢。这是一个奇怪的要求,尤其是在我正在工作的项目中,我有大约15个不同的索引。我最终从Whoosh转向弹性搜索作为后端。这类问题似乎较少。我发现的另一个是Whoosh不允许您使用.model()语法,您必须使用filter(django_ct='')来代替。我正要切换到弹性搜索,这时我发现了这个,并且刚刚完成了项目。我确实觉得我用非常基本的查询很快就达到了呼呼的极限。我也遇到了.model的限制。如果我进一步扩展我的项目,我几乎肯定会在继续之前切换。