0

私は次のIDのリストを持っています

  • 1
  • 2
  • 3
  • 4

ID 2を削除してから新しい値を挿入すると、ID 5が必要
になります。ID2を自動的に再割り当てすることはできますか?

4

1 に答える 1

2

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を参照して作成されたデータの場合、問題が発生する可能性があります。

于 2013-01-18T04:35:43.113 に答える