Creating Records (create, save, bulk_create)
Django provides multiple ways to create database records — Model.objects.create(), instantiate-then-save, and bulk_create() for inserting many records efficiently. Each approach has its use case.
15 min•By Priygop Team•Updated 2026
Creating Records
- Model.objects.create(field=value) — Create and save in one step
- obj = Model(field=value); obj.save() — Two-step creation
- bulk_create([obj1, obj2]) — Insert multiple records in one query
- get_or_create() — Get existing or create new record
- update_or_create() — Update existing or create new
- create() calls save() internally and returns the object
- bulk_create skips save() and signals for performance
Create Examples
Create Examples
# blog/views.py
# from blog.models import Post, Tag, Category
# Method 1: create() — one step
# post = Post.objects.create(
# title='My First Post',
# content='Hello World!',
# author=request.user,
# )
# Method 2: instantiate + save — two steps
# post = Post(title='My Second Post', content='...')
# post.author = request.user
# post.save()
# Method 3: bulk_create — efficient for many records
# posts = [
# Post(title=f'Post {i}', content=f'Content {i}', author=user)
# for i in range(100)
# ]
# Post.objects.bulk_create(posts) # Single SQL query!
# get_or_create — avoid duplicates
# tag, created = Tag.objects.get_or_create(
# name='Python',
# defaults={'slug': 'python'}
# )
# # created = True if new, False if existing
# update_or_create — upsert pattern
# profile, created = Profile.objects.update_or_create(
# user=request.user,
# defaults={'bio': 'Updated bio', 'website': 'https://example.com'}
# )Tip
Tip
Use Django's built-in Form class for validation. It handles field types, error messages, and HTML rendering automatically.
Diagram
Loading diagram…
QuerySets are LAZY — no DB hit until evaluated.
Common Mistake
Warning
Not using {% csrf_token %} in forms. Django rejects POST requests without CSRF tokens with a 403 error.
Practice Task
Note
(1) Create a simple ContactForm with name, email, message. (2) Add {% csrf_token %}. (3) Handle submission in the view.
Quick Quiz
Key Takeaways
- Django provides multiple ways to create database records — Model.
- Model.objects.create(field=value) — Create and save in one step
- obj = Model(field=value); obj.save() — Two-step creation
- bulk_create([obj1, obj2]) — Insert multiple records in one query