Django Haystack:在MultiValueField上搜索范围

时间:2011-08-16 12:48:04

标签: django django-haystack

我想知道是否可以在MultiValueField上进行范围搜索。我的模型如下所示:

Book
   Title = 'Awesome Book'
   Prices = [ Decimal('10.00'), Decimal('15.00'), Decimal('20.00') ]

我使用MultiValueField索引price字段,我希望能够执行以下操作:

sqs = SearchQueryResult()
sqs.filter(prices__gt=Decimal('10.00'), prices__lt=Decimal('20.00'))

这是可能的还是我必须使用别的东西来对多个值进行范围搜索?

更新

我忘了提到__gt不起作用,我认为这是因为它将其索引为字符串列表。我找到了以下link,他们谈到了继承MultiValueField的问题。我尝试了这个,但我不能让它给我一个小数列表。子类MultiValueFiled如下所示:

class MultiValueDecimalField(fields.MultiValueField):
    field_type = 'decimal'

3 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是执行以下操作:

sqs.filter(prices__in=['%.2f' % (x/100.00) for x in range(1000, 2000)])

这很丑陋但是很有效。尽管如此,仍然可以接受其他答案。

答案 1 :(得分:1)

同样的事情:当我应用过滤器__gte,__ gt等时,我注意到SearchQuerySet返回不正确的数据。当我将字段类型更改为FloatField时,一切正常。看起来像bug或smth

答案 2 :(得分:0)

您是否尝试过范围字段查找?

SearchQuerySet().filter(view_count__range=[3, 5])

http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#field-lookups