2009-07-13 3 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 라이브러리가 사용하는 것을 말하기는 어렵습니다. 나는 float 필드에 저장된 값이 실제로 무엇인지 알아 내거나 적어도 리턴되는 것을 판별한다고 말할 수 있습니다. 그것이 실제로 "inf"이면 float 필드에 제대로 저장 될 수 없습니다.

+0

float ('inf')와 float ('infinity')는 동일하지만 'inf'또는 'infinity'문자열이 아닙니다 ... –

+0

http : //code.djangoproject .com/ticket/4287 2 년 전이지만, PostgreSQL 자체에 문제가 있다고 생각합니다. – AlbertoPL

+0

그래, DecimalField가 제대로 처리하는지 확인해보십시오. – AlbertoPL