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