django のデータモデルで on_delete を使用する
2022-03-02 16:44:47
I. 外部キーの削除
について
on_delete
の概要は以下の通りです。
-
1. 共通使用法(に設定
null
)class BookModel(models:) """ Book table """ book_name = models.CharField(max_length=100, verbose_name='book_name') # indicates that the foreign key is associated with the author table, when the author table is deleted, the book table is not deleted, but only the foreign key is left empty foreignKey(AuthModel, null=True, blank=True, on_delete=models.SET_NULL) FloatField(verbose_name='price') create_time = models.DateTimeField(auto_now_add=True, verbose_name='add time')
-
2. その他の属性について
-
CASCADE
:これはデフォルトのオプションであるcascade deleteであり、明示的に指定する必要はありません。 -
PROTECT
: プロテクトモードでは、このオプションを使用すると、削除時にProtectedError
というエラーが発生します。 -
SET_NULL
: Null モードでは、外部キーフィールドは削除されると NULL に設定されます。blank=True, null=True
フィールドが定義されているときは、空であることが許容されます。 -
SET_DEFAULT
: デフォルト値の設定、削除すると外部キーフィールドはデフォルト値に設定されるので、外部キー定義時にデフォルト値を追加するように注意してください。 -
SET()
: 値をカスタマイズする。もちろん、対応するエンティティでなければならない。
-
-
3. その他の注意事項:About
SET()
の使用について**Official example** def get_sentinel_user(): return get_user_model().objects.get_or_create(username='deleted')[0] class MyModel(models.Model): user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), )
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例