📌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
📌적용
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']
template_name = "pages/checklist_update.html"
success_url = '/tasks/'
pk_url_kwarg = "checklist_id"
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']) + '/'