5

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でDjango 1.0.2を使用しています

4

2 に答える 2

5

Djangos ORM には、これに対する特別な処理がないようです。値の Python 表現は inf と -inf ですが、PostgrSQL は 'Infinity' と '-Infinity' を必要とします。明らかに、Djangos ORM はその変換を処理しません。

したがって、ORM を修正する必要があると思います。次に、他の SQL データベースが他の形式を必要とする可能性が非常に高いか、無限大をまったく処理しないという事実について考えてみてください。

于 2009-07-13T15:43:01.073 に答える
0

それは「無限」であるべきですよね?ただし、それが float フィールドに格納できるかどうかはわかりません。float('infinity') は inf を返し、それは char フィールドになります。

編集: 残念ながら、Django がどの C ライブラリを使用しているかは、深く掘り下げないとわかりません。float フィールドに格納されている値が実際に何であるかを把握するか、少なくとも何が返されているかを判断する必要があります。それが実際に「inf」である場合、それは float フィールドに正しく格納できません。

于 2009-07-13T13:41:15.467 に答える