2011-12-08 9 views
8

DjangoのオブジェクトのID値のカウンタを設定する方法はありますか?新しいDjangoオブジェクトのid値を特定の値で開始するように設定する方法はありますか?

たとえば、次回にタイプ 'ビデオ'のオブジェクトを作成するときに、id = 100にあるオブジェクト 'ビデオ'があります。これはid = 101になります。しかし、私はすべての新しく作成されたビデオオブジェクトをid = 2000で始めるようにしたいと思います。これを行う方法はありますか?

+0

ID = 1999のデータベースにダミー行を作る醜いハックがあります。次の自動生成IDは2000になります。 –

+0

本当ですか? auto_incrementはdbのmaxから始まるだけですか?すなわち、穴を埋めるつもりはない?私はそれを認識しませんでした。それは実際に私がする必要があるためにうまくいきます。ありがとう! –

+0

私の答えをさらに見てください。 –

答えて

3

ID = 1999のデータベースにダミー行を作成するフィクスチャを作ることができます。次の自動生成IDは2000になります。

この解決策は、おそらくデータベースのバックエンドによって「中止したところから再開」するかどうかによって決まります。少なくともMySqlとPostgreSQLはこれを行います(私はすべてのバックエンドがこれをしていると思います)。

は(私の知る限り)しかし、もはやデータベースに依存しないではないでしょうSQL文ALTER TABLE tbl AUTO_INCREMENT = 100;

から構成されていることも、MySQL用のソリューションがあります。

9

オブジェクトを作成するときには、限り、あなたは保存する前に、あなたがそれを行うよう、IDを指定することができます。

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

あなたはちょうどあなたがそれぞれの時間を望んでいたIDを計算することができ - 私が何かわからないけれどもDjangoの自動IDフィールドに間違っています;

+1

私はOPが自動IDのシーケンスの開始値をDjangoで設定する方法があるかどうかを尋ねることを意図していたと思います。 –

関連する問題