2010-06-18 30 views
8

Tôi đang cố gắng để lưu trữ một số trong django trông như thế này:Làm thế nào để lưu trữ một số nguyên chủ trì của zeros trong django

000001 

Vấn đề của tôi là nếu tôi loại này bên trong một IntegerField nó được chuyển đổi sang "1" không có số 0 đứng đầu. Tôi cũng đã thử với một DecimalField với cùng một kết quả. Làm thế nào tôi có thể lưu trữ các số không đầu bằng cách sử dụng một CharField? (Tôi cần phải thao tác số mà trong đó là hình thức số nguyên)

Trả lời

16

Đừng lưu trữ nó với hàng đầu zero. Định dạng nó trên đầu ra thay vào đó:

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

Tôi không nghĩ về điều đó. Nó có thể làm các trick, kể từ khi tôi thực sự cần số 0 hàng đầu là trong đầu ra, không được lưu trữ bên trong DB. –

+0

Nếu bạn cần lưu trữ hoặc xử lý: new_val = "% 05d"% value – laffuste

+0

Cách tuyệt vời để giải quyết. –

1

Tôi nghĩ rằng bạn nên sử dụng một CharField và làm điều gì đó như thế:

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

Có lẽ tôi đang làm điều gì đó sai, nhưng tôi không thể làm int (models.CharField ....) vì nó cố gắng chuyển đổi một cá thể CharField (không phải là giá trị) thành a int –

+0

Arf vâng tôi nghĩ bạn đang làm điều gì đó sai. Có thể nếu bạn hiển thị mã của mình, tôi có thể theo dõi nó. –

Các vấn đề liên quan