2009-07-13 10 views
4

私は無限をFloatFieldに入れようとしていますが、それはうまくいかないようです。これをどうすれば解決できますか?中Django FloatFieldに無限大と無限大を入れる方法は?

f = DjangoModel(float_value=float('inf')) #ok 
f.save() #crashes 

結果:私はジャンゴを使用してい

Traceback (most recent call last): 
... 
ProgrammingError: column "inf" does not exist 
LINE 1: ... "float_value") VALUES (inf) 

は、PostgreSQL 8.3

答えて

3

Djangos ORMには特別な処理がないようです。 Pythonの値の表現は、infと-infですが、PostgrSQLでは「Infinity」と「-Infinity」が必要です。もちろん、Djangos ORMはその変換を処理しません。

ORMを修正する必要があります。そして、他のSQLデータベースが他のフォーマットを好むかもしれないという事実、あるいは全く無限を扱わないという事実について考えてみましょう。

+0

私は1e100を無限大として使うと思います。 :) –

+0

それは正常に動作するはずです。 :) –

0

と1.0.2それはいけない '無限大' すべきですか?しかし、私は浮動小数点数のフィールドに格納できるかどうかは分かりません。 float( 'infinity')はinfを返し、charフィールドになります。

編集:残念ながら、CライブラリDjangoが深く掘り下げることなく使用するとは言いがたいです。浮動小数点フィールドに格納されている値が実際に何であるかを調べるか、少なくとも何が返されているかを判断するといいでしょう。実際には "inf"の場合、floatフィールドに正しく格納することはできません。

+0

float( 'inf')とfloat( 'infinity')は同じですが、 'inf'または 'infinity'という文字列ではありません... –

+0

http://code.djangoproject .com/ticket/4287 2歳ですが、PostgreSQL自体に問題があると思います。 – AlbertoPL

+0

DecimalFieldが正しく処理するかどうか確認してみてください。 – AlbertoPL

関連する問題