djangoデータモデルでon_についてdeleteの使用

4441 ワード

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