Django ViewClass 2-9) UpdateView

Turtle·2023년 12월 19일
0
post-thumbnail

📌UpdateView

  • 기존 데이터를 조회 후 업데이트 처리해주는 뷰
  • ModelForm의 기능도 내장하고 있어 폼 렌더링까지 지원
  • CreateView와 사용 방법이 비슷함

Update 뷰 클래스의 기본 형태

class UpdateView:
	model: Model
    fields: str[]
    template_name: str
    pk_url_kwarg: str
    success_url: str
    
    def get_success_url(self):
    	return success_url: str
   	
    # form_valid도 사용 가능

📌적용

from django.http import HttpRequest, HttpResponse
from django.shortcuts import render, HttpResponseRedirect, redirect
from django.views.generic import TemplateView, CreateView, UpdateView, DeleteView, ListView, DetailView, FormView
from .models import Task, ChecklistItem
from django.utils import timezone
from django.core.paginator import Paginator
from django.urls import reverse_lazy

class ChecklistUpdateView(UpdateView):
    model = ChecklistItem
    fields = ['checked']	# boolean 필드(True/False)
    template_name = "pages/checklist_update.html"
    success_url = '/tasks/'
    pk_url_kwarg = "checklist_id"	# URLMapping시에도 
    
    # 상세보기 페이지에서 수정 페이지로 이동하지않고 직관적으로 처리할 수 있도록 get 메소드 오버라이드
    def get(self, request, *args, **kwarg):
        data = super().get_object()
        data.checked = not data.checked
        data.save()
        return redirect(self.get_success_url())
    
    def get_success_url(self) -> str:
        return self.success_url + str(self.kwargs['task_id']) + '/'

0개의 댓글