2010-06-18 20 views
8

Estoy tratando de almacenar un número en Django que tiene este aspecto:Cómo almacenar un entero dirigido por ceros en Django

000001 

Mi problema es que si escribo esto dentro de un IntegerField que se convierte a "1" sin los ceros a la izquierda. Lo intenté también con un DecimalField con el mismo resultado. ¿Cómo puedo almacenar los ceros a la izquierda sin usar un CharField? (Necesito para manipular ese número en su forma entera)

Respuesta

16

No almacene con los ceros a la izquierda. Formato de salida en su lugar:

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

No pensé en eso. Podría hacer el truco, ya que donde realmente necesito los ceros a la izquierda es en salida, no almacenada dentro de la base de datos. –

+0

Si necesita almacenarlo o procesarlo: new_val = "% 05d"% value – laffuste

+0

Una forma increíble de resolverlo. –

1

Creo que se debe utilizar un CharField y hacer algo como lo siguiente:

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

Tal vez estoy haciendo algo mal, pero no puedo hacer int (models.CharField ....), ya que trata de convertir una instancia CharField (no el valor) a a int –

+0

Arf sí, creo que estás haciendo algo mal. Quizás si muestras tu código puedo rastrearlo. –

Cuestiones relacionadas