Django Update Data – Modify Existing Records in the Database (2025 Guide)
Introduction – Why Learn to Update Data in Django?
In Django, updating data refers to modifying existing rows in your database using Django’s powerful ORM. Whether from a form, view, or admin panel, updating allows you to keep your site’s content accurate and current.
In this guide, you’ll learn:
- How to update records using Django shell
- How to update data via views
- How to use
save()andupdate()correctly - Best practices for safe updates
Step 1: Sample Model for Update
models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
Step 2: Update Using Django Shell
$ python manage.py shell
Then:
from blog.models import Post
post = Post.objects.get(id=1)
post.title = "Updated Title"
post.content = "Updated content here."
post.save()
This modifies and saves the record with ID 1.
Step 3: Update Data in a View
views.py
from django.shortcuts import get_object_or_404
from django.http import HttpResponse
from .models import Post
def update_post(request, post_id):
post = get_object_or_404(Post, id=post_id)
post.title = "View-Based Update"
post.save()
return HttpResponse(" Post Updated")
Map to URL:
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('update/<int:post_id>/', views.update_post, name='update-post'),
]
Visit http://localhost:8000/update/1/ to update the post.
Step 4: Use .update() for Bulk or QuerySet Updates
Post.objects.filter(id=1).update(title="Updated with .update()")
✔️ Useful when you don’t need to call save() or use model methods.
Optional: Update via Django Admin
- Open http://localhost:8000/admin/
- Edit any model using the admin panel interface
- Save changes with built-in form UI
Best Practices
- Use
get_object_or_404()to avoidDoesNotExisterrors - Validate data before saving (especially from forms)
- Use
update()for performance when changing many records - Prefer
POSTmethods for updates in production
Summary – Recap & Next Steps
Key Takeaways:
- Use
save()for individual object updates - Use
update()for bulk QuerySet updates - Views, shell, and admin all support model updates
- Always handle missing or invalid objects gracefully
Real-World Relevance:
From blog posts to user profiles and product listings—data changes frequently, and safe updates are essential for reliability.
Frequently Asked Questions (FAQ)
What’s the difference between save() and update()?
save() updates a single object, calling model methods
update() changes fields directly in the database without model logic
How do I update only some fields?
Just assign values to the fields you want:
post.title = "New Title"
post.save(update_fields=['title'])
How can I prevent updates to certain fields?
Use editable=False in your model or exclude fields in forms.
What if the record doesn’t exist?
Use get_object_or_404() or handle DoesNotExist exceptions.
Should I update data in a GET request?
No. Use POST or PUT for updates—GET should never change data.
Share Now :
