2011-12-08 23 views
8

Có cách nào để đặt bộ đếm giá trị id cho các đối tượng trong Django không?Có cách nào để đặt giá trị id của các đối tượng Django mới để bắt đầu ở một giá trị nhất định không?

Ví dụ: tôi có tập hợp các đối tượng 'Video' hiện đang ở id = 100 vào lần tiếp theo tôi tạo đối tượng thuộc loại 'Video', nó sẽ là id = 101. Tuy nhiên tôi muốn có tất cả các đối tượng Video mới được tạo bắt đầu từ id = 2000. Có cách nào để làm việc này không?

+0

Một hack xấu xí sẽ là tạo một vật cố định tạo hàng giả trong cơ sở dữ liệu của bạn với ID = 1999. ID được tạo tự động tiếp theo sẽ là 2000 sau đó. –

+0

thực sự? vì vậy auto_increment chỉ bắt đầu từ max trong db? I E. không cố gắng điền vào bất kỳ lỗ nào? Tôi không nhận ra điều đó. điều đó thực sự tốt cho những gì tôi cần làm. Cảm ơn! –

+0

xem câu trả lời của tôi tiếp tục xuống. –

Trả lời

3

Bạn có thể tạo lịch thi đấu tạo hàng giả trong cơ sở dữ liệu của bạn với ID = 1999. ID được tạo tự động tiếp theo sẽ là 2000 sau đó.

Giải pháp này có thể phụ thuộc vào cơ sở dữ liệu của bạn phụ trợ để 'tiếp tục nơi bạn rời đi'. Ít nhất MySql và PostgreSQL làm điều này (tôi đoán mỗi phụ trợ làm điều này).

Ngoài ra còn có một giải pháp cho MySql chỉ (như xa như tôi biết) mà bao gồm một câu lệnh SQL ALTER TABLE tbl AUTO_INCREMENT = 100;

Đó sẽ không phải là cơ sở dữ liệu thuyết bất khả tri nữa, mặc dù.

9

Bạn có thể chỉ định ID khi bạn tạo đối tượng, miễn là bạn làm điều đó trước khi bạn tiết kiệm:

new = Video() 
new.id = 2000 
new.save() 

Bạn chỉ có thể tính toán ID bạn muốn mỗi lần - mặc dù tôi không chắc chắn những gì sai với các trường ID tự động của Django;)

+1

Tôi nghĩ rằng OP có nghĩa là để hỏi nếu có một cách để cấu hình trong Django giá trị bắt đầu cho chuỗi cho tự động id. –

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