要するに、手書きでのpkのURLを書き換えられた時の対策。get_querysetメソッドをオーバーライドする。
views.py
|
from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic.edit import UpdateView from django.shortcuts import redirect """ 更新画面 """ class HogeUpdateView(LoginRequiredMixin, UpdateView): template_name = 'hoge_update.html' model = Hoge : # ログインしているユーザが作ったもでなければアクセス不可 def get_queryset(self): # このビューで生成されるベースとなるクエリセットを取得 base_qs = super(HogeUpdateView, self).get_queryset() # さらにユーザIDで絞った結果を返す。(存在しないので404が返る) # 条件分岐してエラーページを出しても可 return base_qs.filter(created_by=self.request.user) |
参考サイト)