Как преобразовать представление на основе функций в UpdateView?

Я слишком долго смотрел на код... но до конца не могу разобраться...

Я пытаюсь преобразовать представление на основе функций в представление на основе классов.... Я сделал это с CreateView, но UpdateView не дает мне покоя. Он не принимает мое обновление.... Я могу заставить представление принять мое обновление... но оно не сохраняет его.... Я не понимаю...

Вот мое представление на основе функций...

def update_task_update_view(request, pk):

task = Task.objects.get(id=pk)
form = TaskForm(request.POST or None, instance=task)

if request.method == "POST":
    if form.is_valid():
        form.save()
        return redirect("MyTasks:task_detail", pk=task.id)

context = {
    "form": form,
    "task": task
}

return render(request, "partials/task_form.html", context)

А вот моя попытка создать представление на основе класса....

class UpdateTaskUpdateView(LoginRequiredMixin,UpdateView):
    model = Task
    form_class = TaskForm
    template_name = 'partials/task_form.html'

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
 
        if form.is_valid():
            task = form.save()
            task.save()
            return redirect("MyTasks:task_detail", pk=task.id)
        else:
            return render(request, "partials/task_form.html", {
                "form":form
            })

Это представление на основе функций работает нормально... никаких проблем с ним нет. Заранее спасибо за любые мысли.

Благодаря помощи FB...Travis Tucker....

Я сделал это вместо этого, и, кажется, все работает нормально...

class UpdateTaskUpdateView(LoginRequiredMixin,UpdateView):
    model = Task
    form_class = TaskForm
    template_name = 'partials/task_form.html'

    def form_valid(self, form):
        form_class = self.get_form_class()
        form = self.get_form(form_class)

        if form.is_valid():
            task = form.save()
            task.save()
            return redirect("MyTasks:task_detail", pk=task.id)
        else:
            return render(request, "partials/task_form.html", {
                "form":form
            })
Вернуться на верх