2010-06-18 14 views
8

Sto cercando di memorizzare un numero in Django che assomiglia a questo:Come conservare un intero guidato da zeri in Django

000001 

Il mio problema è che se scrivo questo all'interno di un IntegerField esso viene convertito in "1" senza zeri iniziali. Ho provato anche con un DecimalField con lo stesso risultato. Come posso memorizzare gli zeri iniziali senza usare un CharField? (Ho bisogno di manipolare quel numero nella sua forma intera)

risposta

16

Non conservare con gli zeri iniziali. Formato su uscita invece:

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

Non ci ho pensato. Potrebbe fare il trucco, dal momento che ho davvero bisogno che gli zeri iniziali siano in uscita, non memorizzati nel DB. –

+0

Se è necessario archiviarlo o elaborarlo: new_val = "% 05d" valore% – laffuste

+0

Modo impressionante per risolverlo. –

1

Credo che si dovrebbe utilizzare un CharField e fare qualcosa di simile:

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

forse sto facendo qualcosa di sbagliato, ma non posso fare int (models.CharField ....) perché cerca di convertire un'istanza CharField (non il valore) per un int –

+0

Arf sì, penso che stai facendo qualcosa di sbagliato. Forse se mostri il tuo codice, posso seguirlo. –

Problemi correlati