๐Ÿ“ Django

Django UpdateView

P
Author
PyLand Team
๐Ÿ“…
Published
30.06.2026
โฑ๏ธ
Reading time
1 min
๐Ÿ‘๏ธ
Views
266
๐ŸŒฟ
Level
Medium

UpdateView is a class-based view for editing an existing object through a form.

Basic Example

from django.views.generic import UpdateView
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Task

class TaskUpdateView(LoginRequiredMixin, UpdateView):
    model = Task
    fields = ['title', 'description', 'status', 'priority']
    template_name = 'tasks/task_form.html'
    success_url = reverse_lazy('task-list')

URL

path('tasks/<int:pk>/edit/', views.TaskUpdateView.as_view(), name='task-edit'),

Template (same as for CreateView)

<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Save</button>
  <a href="{% url 'task-list' %}">Cancel</a>
</form>

Permission Check (owner only)

class TaskUpdateView(LoginRequiredMixin, UpdateView):
    model = Task
    fields = ['title', 'description', 'status', 'priority']

    def get_queryset(self):
        return Task.objects.filter(owner=self.request.user)

    def get_success_url(self):
        return reverse('task-detail', kwargs={'pk': self.object.pk})

Additional Processing on Save

class TaskUpdateView(SuccessMessageMixin, UpdateView):
    model = Task
    fields = ['title', 'status', 'priority']
    success_message = 'Task updated!'

    def form_valid(self, form):
        # Log the change
        logger.info(f'Task {self.object.pk} updated by {self.request.user}')
        return super().form_valid(form)

Custom Form Fields

class TaskUpdateView(UpdateView):
    model = Task
    form_class = TaskUpdateForm  # custom form instead of fields

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['user'] = self.request.user  # pass the user to the form
        return kwargs

Your reaction to the article

๐Ÿ’ฌ Comments (0)

๐Ÿ” Sign in to leave a comment
๐Ÿšช Login
๐Ÿ’ญ

No comments yet

Be the first to share your opinion about this article!

๐Ÿ”— Similar

Similar articles

Continue learning with these materials

๐Ÿ“

Search in Django

You can start with simple Django ORM filters and move to PostgreSQL features when you...

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 278
๐Ÿ“

Swagger Documentation with drf-spectacular

drf-spectacular generates an OpenAPI 3.0 schema and Swagger UI for DRF.

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 561
๐Ÿ“

settings.py: Django Configuration

settings.py is the central configuration file for a Django project.

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 315
๐ŸŽ“ Continue learning

Courses that cover this material

Visit the course to apply this material in practice.

Django RequestLab: from HTTP to secure production Open course curriculum