【Django】QuerySet Object has no attribute ‘~~~’が発生した時の対処法

コメントの削除後にブログページに戻る機能を追加したく調整していたと所久々にこのエラーにあい、どうやって対処するのか忘れかけていたのでもう二度と忘れないように学習メモとして公開します。もし、なんかこんな感じのエラーを吐いてしまっていて苦戦している人の手助けになればと思います。

解決方法

「そのobjectには指定した名前はねぇ!!」という結果が返ってきてたので、コードを書いて丁寧に場所を教える必要がありました。僕の場合は以下のような形で直しました。

class CommentDelete(LoginRequiredMixin, generic.DeleteView):
    model = Comment
    def delete(self, request, *args, **kwargs):
        return super().delete(request, *args, **kwargs)
    def get_success_url(self):
        comment = get_object_or_404(Comment, slug=self.kwargs['slug'])#消したいコメントがどこに繋がっているのかをDjangoに説明する文
        return resolve_url('Blog:post', slug=comment.post.slug)#うまく行ったらCommentを消す前にリンクしたモデルPostのslugを参照してそこにアクセスする用に支持する

発生経緯

簡単に発生したコードを入力しておきます。

      blog= get_object_or_404(Blog, slug=self.kwargs['slug'])
      return resolve_url('Blog:post', slug=blog.slug)

これの場合コメント自身に登録されていたslugを参照してしまい消える前にそのslugの記事はねぇと返されることで発生するエラーでした。

宣伝

他にもDjangoで作ったものの技術のまとめを以下の記事にしてまとめておりますので、暇があったり何か興味が引かれるものがありましたら是非見てみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA