Djangoの管理画面より、テーブルのレコードを特定の条件の時のみ、削除したいと考えています。
具体的には、「名前テーブル」「得点テーブル」「チェック項目テーブル」の3つのテーブルがあるのですが、「得点テーブル」「チェック項目テーブル」には、「名前テーブル」への「1対1」の外部キーを設定しています。以下は、得点テーブルを定義したクラスになります。
class Score(models.Model): score = models.IntegerField(blank=False, null=False) name_list = models.OneToOneField( NameList, on_delete=models.CASCADE, primary_key=True ) created_at = models.DateTimeField() updated_at = models.DateTimeField(auto_now=True) def __str__(self): return "%s" % (self.score)
得点テーブル及び、チェック項目テーブルには、admin.pyにて、以下のメソッドを追加し削除や変更などの操作を管理画面より行えないよう設定をしました。
class DisplayScore(admin.ModelAdmin): list_display = ("score", "name_list") readonly_fields = ("score", "name_list", "created_at", "updated_at") def has_change_permission(self, request, obj=None): return False def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False
その為、管理画面から、「得点テーブル」「チェック項目テーブル」をクリックしレコードの削除を行うことは出来ず、外部キーにより関連づいている為、「名前テーブル」のレコードも削除出来ない状況です。
しかし、ここで、「名前テーブル」からは、レコードの削除を行いたいと考えています。
無論、外部キーにより、関連づいている「得点テーブル」及び「チェック項目テーブル」のレコードも削除を行いたいと考えているのですが、こちらを実現する方法はありますでしょうか。
どなたか、ご助言頂けましたら幸いです。
あなたの回答
tips
プレビュー