LoginSignup
1
1

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