Django – UpdateView pk 없이 사용하기
url 로 UpdateView 의 PK 값을 넘겨주는 방식이 일반적인데, 사용자 정보 같은 것을 넘겨줄 때 사용자에 대한 pk 값이 노출되는게 부담스럽다.
꼭 넘겨줘야 하나? 내꺼만 고치면 되는데…
이때는 내장 함수를 통해 자기가 로딩 되면서 가져오도록 하면 된다. 자기 객체를 불러오는 방식이다. 주인공은 바로,
get_object(self)
@method_decorator(login_required, name="dispatch")class profile_update_view(UpdateView): model = Profile # fields = "__all__" fields = ["level", "phone"] template_name = "profile.html" def get_object(self): print("profile_update_view get_object()", self.request.user) return Profile.objects.get(user=self.request.user) # return self.request.user def get_success_url(self): return self.request.META["HTTP_REFERER"]
쓸데없이 url 로 넘기지 않고 바로 자기가 호출될때 필요한 객체를 get_objct() 함수에서 가져와서 return 해주면 끝!