[解決済み] djangoモデルのカスタムsave()メソッドでは、新しいオブジェクトをどのように識別する必要がありますか?
2022-04-10 16:52:43
質問
Django モデルオブジェクトの save() メソッドで、新しいレコードを保存するとき (既存のレコードを更新するときではない) に特別なアクションをトリガーしたいのです。
(self.id != None)のチェックは、自己のレコードが新しく、更新されていないことを保証するのに必要かつ十分なのでしょうか? これは見落とすかもしれない任意の特別なケース?
解決方法は?
更新しました。
ということを明確にした上で
self._state
はプライベートなインスタンス変数ではありませんが、衝突を避けるためにそのように命名されています。
self._state.adding
をチェックするのが望ましいとされるようになった。
self.pk is None:
は、新しいモデルオブジェクトの中で、オブジェクトが
UUIDField
をその
primary_key
.
心配しなければならないのは、id以外のフィールドに一意性制約があるかどうかです(例えば、他のフィールドに二次的一意性インデックスがある場合)。この場合、新しいレコードが手元にあるにもかかわらず、それを保存することができない可能性があります。
関連
-
[解決済み] Django の Model オブジェクトを、全てのフィールドをそのままに dict に変換します。
-
[解決済み] django 1.7 migrate で "table already exists" というエラーが発生する。
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み】Djangoのモデルインスタンスオブジェクトをクローンして、データベースに保存する方法は?
-
[解決済み】テンプレートコード内で変数に値を設定するには?
-
[解決済み】Django - クエリ結果を制限する
-
[解決済み】Djangoのクエリ - idとpkの比較
-
[解決済み】djangoのフォームフィールドでデフォルトで空のクエリセットを作成する
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] [Djangoで「一括更新」する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コマンド 'git' が見つからない - windows
-
[解決済み] 例外です。リクエストのデータストリームから読み込んだ後、ボディにアクセスすることはできません。
-
[解決済み] POSTメソッドは常に403 Forbiddenを返します。
-
[解決済み] 正確な検索のための QuerySet 値は、スライシングを使用して 1 つの結果に制限する必要があります。フィルタ・エラー
-
[解決済み] http://127.0.0.1:8000/ には接続できるのに、http://192.168.1.6/ には接続できないのはなぜですか?
-
[解決済み] Djangoにおける{% %}と{{ }}について
-
[解決済み] Django - テンプレートのforループで番号を反復する
-
[解決済み】Django - クエリ結果を制限する
-
[解決済み】Djangoのvalues_listとvaluesの比較
-
[解決済み】Django TemplateDoesNotExist?