2011-08-16 10 views
1

MultiValueFieldで範囲検索を実行できるかどうかは疑問でした。このことは可能ですDjango Haystack:MultiValueFieldの範囲検索

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

かの操作を行います。

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

を私はMultiValueFieldと価格のフィールドをインデックス化していると私はフォローを行うことができるようにしたいと思います:私は、次のようなモデルを持っています私は複数の値の範囲検索を行うために別の何かを使わなければなりませんか?

更新:

私は__gtが動作しないことを言及するのを忘れてしまったと私はそれが文字列のリストとしてそれをインデックスだからだと思います。 linkで、MultiValueFieldのサブクラス化について説明しています。私はこれを試しましたが、小数点のリストを私に与えることはできません。サブクラス化MultiValueFiledは、次のようになります。この問題を解決するために

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

答えて

2

一つの方法は、次のことをやっている:

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

それは非常に醜いですが、それは動作します。しかし、まだ他の答えにオープンしています。

1

同じこと:フィルタ__gte、__gtなどを適用したとき、私はSearchQuerySetが不正なデータを返すことに気付きました。フィールドタイプをFloatFieldに変更すると、すべてが正しく機能するようになりました。バグ、スムースのように見える