Django入門|models内のデータレコード(object)削除方法
- 公開日:2018/06/30
- 更新日:2018/10/19
- 投稿者:n bit
Djangoのmodelsに保存してあるデータレコード(object:オブジェクト)を指定して削除する方法をします。filterで削除したいオブジェクトを呼び出すことで同時に複数削除することも可能です。
この記事は約 分で読めます。(文字)
models内のデータレコード(object)削除方法
models内に保存されているデータレコード(オブジェクト)を削除するにはいくつかの方法があります。ここでは『汎用ビューのDeleteViewを使った削除方法』とobjectsのメソッド『.delete()を使った削除方法』の2つを解説します。
汎用ビューのDeleteViewを使った削除方法
通常1つずつmodels内のデータを削除する場合であれば汎用ビューのDeleteViewを使うのが一般的です。DeleteViewはその名の通りオブジェクトデータを削除するための汎用ビューです。
下記のように汎用ビューを用意し削除したいページのプライマリーキーを保持してアクセスすることで削除できます。
modelは必須の指定で、削除したいデータが保持されているmodelを指定します。
success_urlはデータ削除後に遷移したいページを指定しておきます。
views.py
class SampleDeleteView(generic.DeleteView):
model = Sample
success_url = reverse_lazy('app:list_sample')
.delete()を使った削除方法
汎用ビューのDeleteViewでは対応しきれない複数のmodelに跨がってデータを同時に削除する場合や、複数データを一括で削除したい場合、独自の関数内でmodelのデータを削除したい場合などは.delete()を利用します。
.delete()はオブジェクトデータを削除するためのメソッドです。
使い方は簡単でmodel内のobjectsをfilterで呼び出し1番後に.delete()をつけて削除命令を出すだけです。
filterの引数に抽出条件を指定しておくことで削除するデータを指定することができます。
views.py
Sample.objects.filter(cat_name='sample').delete()
filterではなく、.all()を使うことでモデル内のデータを全て一括削除することもできます。
views.py
Sample.objects.all().delete()
今日のdot
model内のオブジェクトデータを削除するとき主に利用するのは『汎用ビューのDeleteViewを使った削除方法』とobjectsのメソッド『.delete()を使った削除方法』です。
汎用ビューのDeleteViewを使った削除方法
class SampleDeleteView(generic.DeleteView):
model = Sample
success_url = reverse_lazy('app:list_sample')
.delete()を使った削除方法
Sample.objects.filter(cat_name='sample').delete()