1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DjangoでForeignKeyのon_deleteをDO_NOTHINGにした時、db_constraint=Falseも指定しないとIntegrityErrorが発生する。

Posted at

#delete時のIntegrityErrorエラー
掲題の通り、ForeignKeyモデルフィールドでon_delete引数にDO_NOTHINGを使用する時、db_constraint引数をFalseにしておかないと、リレーション先のモデルオブジェクトを削除した時にIntegrityError'Cannot delete or update a parent row: a foreign key constraint fails'(Mysql)が発生する。

  • on_delete=DO_NOTHING:リレーション先オブジェクトの削除更新時のアクションを"何もしない"にする。
  • db_constraint=False:明示的に外部キー制約を行わない事を指示する。データ整合性が失われるので集計用のトランザクションなどフロントから直接参照されないモデル以外には使用しない方がよいかも。

#参照

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?