すべてが正常に動作します。 djangoのcreate()は、シーケンスの挿入とは直接関係ありません。簡単に:
- postgresql自動インクリメント(「シリアル」タイプ)は、「シーケンスの作成+デフォルトとしてシーケンス値を使用した整数フィールドの作成」のショートカットです。
- djangoの自動フィールド主キー(他に指定されていない場合はidinteger)は、シリアルフィールドを作成するだけです
- IDを手動で指定すると、postgresはその値をデータベースに挿入します。値を指定すると、適切な動作である「デフォルト」パラメータが省略されます。
したがって、挿入でシーケンスを選択した方法でインクリメントする場合は、SELECT setval('sequence_name'、int_value);を使用してシーケンス値を手動で変更する必要があります。それ以外の場合はnullのままにすると、自動的にインクリメントされます。現在の値を選択して+1インクリメントします(シーケンス定義で別の方法で指定されていない場合)。
もう1つのアイデアは、オブジェクトを作成してからIDを更新し(もちろん、まだ使用することはできません)、最後にシーケンス値を最大IDに設定することです。