djangoデータモデルでon_についてdeleteの使用
一、外部キーの削除1、一般的な使い方( 2、その他の属性についての紹介 に対応するエンティティのみが対応する値をカスタマイズします.
3、補足説明: 二、ブロガーのもっと多くの文章を見る
on_delete
のまとめについてnull
に設定)class BookModel(models.Model):
"""
"""
book_name = models.CharField(max_length=100, verbose_name=' ')
# , , ,
author = models.ForeignKey(AuthModel, null=True, blank=True, on_delete=models.SET_NULL)
price = models.FloatField(verbose_name=' ')
create_time = models.DateTimeField(auto_now_add=True, verbose_name=' ')
CASCADE
:これがデフォルトのオプションで、カスケード削除で、明示的に指定する必要はありません.PROTECT
:保護モードで、このオプションを採用すると削除時にProtectedError
エラーが投げ出されます.SET_NULL
:空モード、削除時に外部キーフィールドが空に設定され、前提がblank=True, null=True
であり、このフィールドを定義する際に、空に許可される.SET_DEFAULT
:デフォルト値を設定し、削除すると外部キーフィールドがデフォルト値に設定されるので、外部キーを定義するときはデフォルト値を付けることに注意します.SET()
:SET()
の使用について** **
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),
)