Natknąłem się również na ten problem i dowiedziałem się, że właściwie wszystko działa poprawnie. W Pythonie, jeśli faktycznie zdefiniujesz coś takiego Decimal("0.0000000000")
zobaczysz to w konsoli:
>>> Decimal("0.0000000000")
Decimal('0E-10')
W mojej sytuacji konwertowałem z SQLite3 backend do PostgreSQL do produkcji. Wszystko działało dobrze w SQLite, ponieważ nie pokazuje on (ani nie przechowuje) wszystkich cyfr dziesiętnych. Więc jeśli wstawisz 0
w polu numeru SQLite, a następnie wybierz go, otrzymasz 0
.
Ale jeśli wstawisz 0
w PostgreSQL pole numeryczne spowoduje wypełnienie zerem miejsca dziesiętnego i wstawi 0.0000000000
. Więc kiedy Python umieści to w Decimal, zobaczysz Decimal("0E-10")
.
AKTUALIZACJA – naprawiona w Django 1.8