【问题标题】:Filter blank CharField in Django Haystack's SearchQuerySet在 Django Haystack 的 SearchQuerySet 中过滤空白 CharField
【发布时间】:2016-06-02 01:39:53
【问题描述】:

我需要返回 SearchQuerySet 中某个 CharField 为空的所有条目,即一个空字符串。

在我的 search_indexes.py 我有:

sometext = indexes.CharField(model_attr='sometext')

我尝试过使用通常的 SQS 语法进行过滤:

SearchQuerySet().filter(sometext__exact='')
SearchQuerySet().filter(sometext__in=['', None])

不只返回空白条目。第一个返回所有条目,第二个根本不返回任何条目。

我的 SearchIndex 定义中是否缺少某些内容?有没有什么方法可以在 Haystack 中使用 Whoosh 后端来完成?

【问题讨论】:

    标签: python django django-haystack whoosh


    【解决方案1】:

    试试这个,它对我有用:

    from haystack.inputs import Raw
    r = SearchQuerySet()
    r.exclude(sometext=Raw('*'))
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

          SomeQuerySet().filter(sometext='')
      

      【讨论】:

      • 我相信这与我在上面尝试过的.filter(sometext__exact='') 相同
      • 是一样的...但是如果数据库配置空白=真和空=假,效果很好
      • 它适用于 QuerySet 过滤器是的,但不适用于 Haystack 的 SearchQuerySet - 我的问题是关于后者。 Haystack 的 API 文档似乎没有涵盖它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      相关资源
      最近更新 更多