Django | 2022. 4. 26. 15:03

Django - model formview 에서 저장되는 객체 값 참고하기

이거 가장 기본인데, 저장은 되는데 내가 그 값을 보고 쓸 수는 없다니, 말도 안된다.

쓰기만 하면 내부적으로 막 돌아가서 자동 저장되는 것처럼 보이니깐 막상 어떤 값을 뽑아 쓰려면 참나...

 

암튼 저장되는 객체의 필드를 참고하고 싶었는데 어떻게 참고해야 하는지 몰랐다.

 

self.form_class.xxxx

self.instance.xxxx

self.form_class.instance.xxxx

 

다 실패, 정답은

self.object.xxxx

 

@method_decorator(admin_required, name="dispatch")
class PartsUpdateView(BSModalUpdateView):
    model = Parts
    filter = ""
    template_name = "devices/_modal_update.html"
    form_class = PartsUpdateForm
    success_message = "Parts saved."
    success_url = reverse_lazy("devices:parts_list")
    # def get_success_url(self):
    #     return self.request.META["HTTP_REFERER"]

    def get_context_data(self, **kwargs):
        context = super(PartsUpdateView, self).get_context_data(**kwargs)
        print("get_context_data", context)
        if self.request.POST:
            print(self.request.POST)
        return context

    def form_valid(self, form):
        print("form_valid")
        # if not self.request.is_ajax():
        if self.request.POST.get("querystring"):
            self.filter = "?" + self.request.POST.get("querystring")
        response = super().form_valid(form)
        return response

    def get_success_url(self):
        print("get_success_url", self.object.name)
        self.success_message = "Parts '" + self.object.name + "' saved."
        return reverse_lazy("devices:parts_list") + self.filter

 

코드를 참고하기 바란다. 

성공했을때 이름을 넣고 싶어서 찾아 본건데, 이 쉬운걸 말이다.

 

참고사이트

https://velog.io/@hyeseong-dev/django-getsuccessurl

 

[django] get_success_url

현재 우리가 프로필 정보를 수정하고 나면메인 화면으로 가게 되어있어요. 사실상 프로필 수정 입력화면 -> 프로필 화면으로 가는 것이 자연스럽습니다. 이를 수정할게요.그런데 그냥 단순히 suc

velog.io

 

쩝.

목적지는 어딘지 걍 걸어가는구나

Iakub Arifulin 님의 사진, 출처: Pexels

댓글을 달아 주세요

">