2
0

More than 3 years have passed since last update.

djangoのmodelで使用するon_deleteってなんぞ?

Last updated at Posted at 2020-12-24

djnagoのモデルで使用するon_deleteについて

表題について、書籍を勉強中に遭遇した疑問です。

実際のコードは以下のような感じでした。

django.models.py

class Test_Model:
    user = models.ForeignKey(CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT, null=True)

調べてみるとdjango2.0よりモデル同士を紐づけるときに必須の項目とのこと。
意味合いとしては参照するオブジェクトが削除された時、紐づいているオブジェクトをどうするかというものらしい。

model.〜には以下の種類がある。
・CASCADE
 紐づいたオブジェクトを全て削除

・PROTECT
 関連づけられたオブジェクトがあると削除が出来ない

・SET_NULL
 オブジェクトは残るが該当する項目がNullになる

・SET_DEFAULT
 オブジェクトは残り、該当する項目にデフォルト値が入るようになる。

・SET()
 オブジェクトは残り該当する項目に関数をセット出来る

・DO_NOTHING
 何も処理しない。

どのように処理するのが適切か考えて決めなければ、、、、

参考サイト
https://djangobrothers.com/blogs/on_delete/

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0