PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

DecimalField convertit zéro en 0E-10

J'ai également rencontré ce problème et j'ai découvert qu'en fait tout fonctionnait correctement. En Python, si vous définissez réellement quelque chose comme ceci Decimal("0.0000000000") vous verrez ceci dans la console :

>>> Decimal("0.0000000000")
Decimal('0E-10')

Dans ma situation, je convertissais à partir de SQLite3 backend pour PostgreSQL pour la fabrication. Tout fonctionnait bien dans SQLite, car il n'affiche pas (ou ne stocke pas) explicitement tous les chiffres décimaux. Donc, si vous insérez 0 dans un champ de numéro SQLite puis sélectionnez-le, vous obtiendrez 0 .

Mais si vous insérez 0 dans un PostgreSQL champ numérique, il fera un zéro sur la décimale et insère 0.0000000000 . Ainsi, lorsque Python place cela dans un décimal, vous verrez Decimal("0E-10") .

MISE À JOUR - corrigé dans Django 1.8