Django SQL データベース DELETEによるデータ削除方法 delete() 操作 まとめ 入門
更新日:2021年2月1日
Djangoで、モデルで定義したデータベースのテーブルからデータを削除(DELETE)する方法をDjangoの公式ドキュメントを参考にしてまとめて記載。
delete()の書き方と注意事項についてまとめています。
環境:Python3.8.2 Django3.1
delete():データを全件削除
記載例
delete():条件に合致するデータを全件削除
記載例
公開日(pub_date)が2005年の記事(Entry)を全て削除。
外部キー ON DELETE CASCADE で関係づけられた他のモデルのデータも同時に削除
# This will delete the Blog and all of its Entry objects.
b.delete()
pk=1のBlogデータを削除した場合、外部キーon_delete=models.CASCADE で参照している
他のモデルのpk=1のBlogに関係づくレコードも同時に削除されます。
例:Entryモデルのレコード:blog = ForeignKey(Blog, on_delete=models.CASCADE)
Entryモデルの関係づくデータも同時に削除。
なお、models.PROTECT の場合は、エラーとなるので、その場合は、
外部キーon_delete=models.PROTECT で参照している他のモデルのpk=1のBlogに関係づくレコードを
先に全て削除して関係づくデータがない状態であれば、pk=1のBlogデータも削除可能です。
例:Entryモデルのレコード:blog = ForeignKey(Blog, on_delete=models.PROTECT)
Entryモデルの関係づくデータを先に削除してから、Blogモデルのデータを削除する。
以上、.delete()でデータを削除できますが、マスタデータを削除する場合は 外部キー CASCADE で参照している他のモデルのデータも削除される事にご注意下さい。