Как сохранить целое число с нулями в django

Я пытаюсь сохранить число в django, которое выглядит так:

000001

Моя проблема в том, что если я наберу это внутри IntegerField, оно будет преобразовано в «1» без начальных нулей. Я пробовал также с DecimalField с тем же результатом. Как я могу хранить ведущие нули без использования CharField? (Мне нужно манипулировать этим числом в его целочисленной форме)


person Oscar Carballal    schedule 18.06.2010    source источник


Ответы (2)


Не храните его с ведущими нулями. Вместо этого отформатируйте его на выходе:

(in view: value = 1)
{{ value|stringformat:"04d" }} # displays as 0001
person Daniel Roseman    schedule 18.06.2010
comment
Я не думал об этом. Это может помочь, поскольку мне действительно нужны начальные нули в выводе, а не в БД. - person Oscar Carballal; 18.06.2010
comment
Если вам нужно сохранить или обработать его: new_val = %05d % value - person laffuste; 06.03.2013

Я думаю, вы должны использовать 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 :-)
person Ghislain Leveque    schedule 18.06.2010
comment
Может быть, я делаю что-то не так, но я не могу сделать int(models.CharField....), потому что он пытается преобразовать экземпляр CharField (а не значение) в int - person Oscar Carballal; 18.06.2010
comment
Arf да я думаю, что вы делаете что-то не так. Может быть, если вы покажете свой код, я смогу его отследить. - person Ghislain Leveque; 21.06.2010