我想知道是否可以在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'
答案 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