2011-12-08 47 views
8

有沒有辦法在Django中設置對象的id值的計數器?有沒有辦法將新的Django對象的id值設置爲以某個值開始?

例如,我有一組對象'視頻',當前在id = 100時,下一次創建類型爲'Video'的對象時,它將是id = 101。不過,我想所有新創建的視頻對象開始在id = 2000。有沒有辦法做到這一點?

+0

一個醜陋的黑客將是一個固定裝置,使ID = 1999的數據庫中的虛擬行。那麼下一個自動生成的ID將是2000。 –

+0

真的嗎?所以auto_increment剛剛從數據庫中的最大值開始?即。不是爲了填補任何漏洞?我沒有意識到這一點。對於我需要做的事情,這確實很好。謝謝! –

+0

進一步查看我的答案。 –

回答

3

您可以製作一個夾具,在ID = 1999的數據庫中創建一個虛擬行。那麼下一個自動生成的ID將是2000。

此解決方案可能取決於您的數據庫後端「恢復您從哪裏離開」。至少MySql和PostgreSQL這樣做(我猜每個後端都這樣做)。

還有對MySQL中的解決方案只(據我所知),它由一個SQL語句ALTER TABLE tbl AUTO_INCREMENT = 100;

這不會是數據庫無關了,雖然的。

9

在創建對象時,可以指定ID,只要你做到這一點,然後再儲存:

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

你可以只計算你每次想要的ID - 雖然我不知道什麼是Django的自動ID字段有誤;)

+1

我認爲OP意在詢問是否有在Django中配置auto-id序列的起始值的方法。 –

相關問題