2010-06-18 4 views
8

Je suis en train de stocker un nombre dans django qui ressemble à ceci:Comment stocker un entier plombé par des zéros dans django

000001 

Mon problème est que si je tape ceci à l'intérieur d'un IntegerField il est converti en "1" sans les zéros en tête. J'ai essayé aussi avec un DecimalField avec le même résultat. Comment puis-je stocker les zéros de tête sans utiliser de CharField? (Je dois manipuler ce nombre dans sa forme entier)

Répondre

16

Ne pas stocker avec les zéros. Format sortie sur la place:

(in view: value = 1) 
{{ value|stringformat:"04d" }} # displays as 0001 
+0

Je n'y ai pas pensé. Cela pourrait faire l'affaire, puisque là où j'ai vraiment besoin, les zéros en tête sont en sortie, pas stockés dans la base de données. –

+0

Si vous devez le stocker ou le traiter: new_val = "% 05d"% value – laffuste

+0

Une manière géniale de le résoudre. –

1

Je pense que vous devriez utiliser un CharField et faire quelque chose comme ça:

try: 
    value = int(field) 
    # do something with value 
except valueError: 
    # raise a ValidationError if you are in the *clean* methods of the form 
    # or raise an other exception 
    # or handle the error 
    # or just raise :-) 
+0

Peut-être que je fais quelque chose de mal, mais je ne peux pas int (models.CharField ....) parce qu'il tente de convertir une instance CharField (et non la valeur) à un int –

+0

Arf oui je pense que vous faites quelque chose de mal. Peut-être que si vous montrez votre code, je peux le suivre. –

Questions connexes