2010-06-18 32 views
8

我試圖存儲在Django一些看起來像這樣的含鉛整數:如何存儲由零在Django

000001 

我的問題是,如果我鍵入此一IntegerField裏面被轉化爲「1」沒有前導零。我也嘗試過與DecimalField相同的結果。如何在不使用CharField的情況下存儲前導零? (我需要操作這個數字在它的整數形式)

回答

16

不要將其與前導零存儲。格式它輸出,而不是:

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

我沒有想到這一點。它可能會訣竅,因爲我真的需要領先的零在輸出,而不是存儲在數據庫中。 – 2010-06-18 13:57:08

+0

如果您需要存儲或處理它: new_val =「%05d」%value – laffuste 2013-03-06 09:15:31

+0

真棒解決問題的方法。 – 2015-08-31 08:37:16

1

我認爲你應該使用一個CharField,做這樣的事情:

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

也許是我做錯了什麼,但我不能這樣做INT(models.CharField ....),因爲它試圖將CharField實例(不是值)轉換爲一個int – 2010-06-18 13:37:08

+0

Arf是的我認爲你做錯了什麼。也許如果你顯示你的代碼,我可以跟蹤它。 – 2010-06-21 07:20:08