私は次のIDのリストを持っています
- 1
- 2
- 3
- 4
ID 2を削除してから新しい値を挿入すると、ID 5が必要
になります。ID2を自動的に再割り当てすることはできますか?
Djangoのモデルの主キーは、通常、データベースレイヤーによって処理される自動インクリメントフィールドによって表されます。たとえば、MySQLでは、AUTO_INCREMENTオプションが主キーに追加されます。
これにより、データベース層が各レコードに一意のIDを割り当てるための効率的な方法が提供されます。Djangoに大幅な変更を加えないと、AUTO_INCREMENTタイプを使用しないようにすることはできません。
代わりに、手動でギャップが含まれていないことを確認する、制御下にあるフィールドを追加する必要があります。django.dbインポートモデルから
class MyModel(models.Model):
my_id = models.IntegerField(unique=True)
my_id
保存する前に、ギャップを含まないシーケンスを表す値を割り当てるのはあなた次第です。挿入時に次に何my_id
をすべきかを見つけることはおそらく簡単ではなく、DjangoORMを介して効率的に行うのは簡単ではないかもしれません。mysqlで連番のギャップを見つける方法を参照してください。いくつかのアイデアのために。
元のIDの番号を付け直すと、特に元のIDを参照して作成されたデータの場合、問題が発生する可能性があります。