Django
Django CRUD Basics
Create, read, update, delete with forms
CRUD with ModelForm
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404
from .forms import TaskForm
from .models import Task
@login_required
def task_create(request):
if request.method == "POST":
form = TaskForm(request.POST)
if form.is_valid():
task = form.save(commit=False)
task.project.owner = request.user # enforce ownership in save()
form.save()
return redirect("tasks:task-list")
else:
form = TaskForm()
return render(request, "tasks/task_form.html", {"form": form})
@login_required
def task_update(request, pk):
task = get_object_or_404(Task, pk=pk, project__owner=request.user)
form = TaskForm(request.POST or None, instance=task)
if request.method == "POST" and form.is_valid():
form.save()
return redirect("tasks:task-detail", pk=pk)
return render(request, "tasks/task_form.html", {"form": form})
Use POST-Redirect-GET after successful POST to prevent duplicate submissions on refresh.