2010-06-18 33 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