私はDjango Webアプリケーションのオフラインバージョンで作業しており、特定のModelXのモデルインスタンスを頻繁に削除しています。Djangoモデルインスタンスのプライマリキーは、すべてのインスタンスが削除された後に1にリセットされません。
私は管理ページからこれを行い、問題は発生していません。モデルには、名前と注文の2つのフィールドしかありません。他のモデルとの他の関係はありません。
新しいインスタンスには利用可能な次のpkが与えられます。すべてのインスタンスを削除すると、新しいインスタンスを追加すると期待されるpk = 1が得られます。
私の実際のデータベースにオンラインでコードを移動すると、私はこれが当てはまらないことに気付きました。モデルインスタンスを変更する必要がありましたが、私は驚いたことに、プライマリキーを1に戻さずにインクリメントし続けました。
Django APIを使用してデータベースにアクセスしました。新しいインスタンスを追加しても、最後に削除されたインスタンスが1の代わりに削除された主キーが生成されます。
ここで問題が何であるか知っている人がいるかどうかわかりません。
私が理解していないのは、オフラインバージョンがオンラインバージョンと同じように動作していない理由です。 – pj2452
単位テストを使用すると、すべてのテストで新しいテーブルを生成しない限り、データベースに特定のテストデータを生成する必要があります。 – Mehdi
開発中に本番データベースと同じデータベースを使用していますか?特に、sqliteは、削除されたオブジェクトのキーを再利用するために解放します(残念なことに、キーの一意性に依存する場合)。 https://sqlite.org/autoinc.html – DylanYoung