質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3401閲覧

python djangoのDeleteViewでdeleteメソッドのオーバーライドが効かない?

fntmn

総合スコア29

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2022/02/16 03:52

djangoのDeleteViewを使用して、レコードの削除を実装しています。
削除完了時にメッセージ処理を追加するために、deleteメソッドのオーバーライドを記載しました。

view.py

1class DeleteView(generic.DeleteView): 2 model = test 3 template_name = 'index.html' 4 success_url = reverse_lazy('test:index') 5 6 def delete(self, request, *args, **kwargs): 7 messages.success(self.request, "削除しました。") 8 return super().delete(request, *args, **kwargs)

環境
Python 3.9.7
django 4.0.1

現象
削除はエラーなく実行されるのですが、メッセージは表示されません。
DeleteView以外のCreateViewやUpdateViewは表示されます。
そのため、ライブラリのインポートなどは上手くいっていると思うのですが…。

pythonやdjangoの勉強中のため、初歩的な問題なのかもしれませんが、アドバイスいただけると幸いです。

PolymetisOutis7👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

deleteメソッドのオーバーライドしてメッセージを表示することは難しかったため、form_valid時に変更してメッセージを表示することにしました。
def form_valid(self, form):
messages.success(self.request, "削除しました。")
return super().form_valid(form)

投稿2022/02/18 15:20

fntmn

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

引数の数が違うのでは(これだと多分オーバーロードやともう)

python

1// この宣言は引数42def delete(self, request, *args, **kwargs): 3 messages.success(self.request, "削除しました。") 4 return super().delete(request, *args, **kwargs) // ←親クラスのDeleteは引数3

やりたいことはこれかな?

python

1// requestにself.requestを引数として与える 2def delete(request, *args, **kwargs): 3 messages.success(request, "削除しました。") 4 return super().delete(request, *args, **kwargs)

引数の型も合わせる必要アリ

投稿2022/02/16 04:07

編集2022/02/16 04:15
akiko_

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fntmn

2022/02/16 12:32

ご回答ありがとうございます。 早速試させていただきましたが、解決には至りませんでした。 海外の書き込みなども見ていますが、同じ書き方が紹介されているため根本的な問題なのかもしれません。もう一度、一通り見直してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問