📝 Django

Django ORM: Cheatsheet

P
Author
Pyland
📅
Published
30.06.2026
⏱️
Reading time
1 min
👁️
Views
86
🌿
Level
Medium

ORM (Object-Relational Mapping) lets you work with the database through Python objects without writing SQL.

CREATE

# Method 1: create()
task = Task.objects.create(title="Buy milk", status="todo")

# Method 2: save()
task = Task(title="Buy milk", status="todo")
task.save()

# bulk_create — many objects in a single query
Task.objects.bulk_create([
    Task(title="Task 1"),
    Task(title="Task 2"),
    Task(title="Task 3"),
])

READ

Task.objects.all()                         # all records
Task.objects.get(pk=1)                     # single record (raises exception if not found)
Task.objects.filter(status='todo')         # filter
Task.objects.exclude(status='done')        # exclude
Task.objects.first()                       # first record
Task.objects.last()                        # last record
Task.objects.count()                       # count
Task.objects.exists()                      # bool: any records exist?

Filters (Lookups)

Task.objects.filter(title__contains='milk')      # LIKE '%milk%'
Task.objects.filter(title__icontains='milk')     # case-insensitive
Task.objects.filter(title__startswith='Buy')
Task.objects.filter(created_at__date=today)
Task.objects.filter(priority__gt=5)              # >
Task.objects.filter(priority__gte=5)             # >=
Task.objects.filter(priority__lt=10)             # <
Task.objects.filter(priority__in=[1, 2, 3])      # IN
Task.objects.filter(description__isnull=True)    # IS NULL

UPDATE

# Single object
task = Task.objects.get(pk=1)
task.status = 'done'
task.save()

# Multiple objects (single SQL UPDATE)
Task.objects.filter(status='todo').update(status='in_progress')

DELETE

task = Task.objects.get(pk=1)
task.delete()

# Multiple objects
Task.objects.filter(status='done').delete()

ORDER BY

Task.objects.order_by('title')           # ascending
Task.objects.order_by('-created_at')     # descending
Task.objects.order_by('status', '-priority')  # multiple fields

Chaining QuerySets

# QuerySets are lazy — SQL is executed only on iteration
tasks = (
    Task.objects
    .filter(status='todo')
    .exclude(priority=0)
    .order_by('-priority')
    [:10]  # LIMIT 10
)

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

📝

pytest-django: Testing Django

Охватываемые темы: Installation, @pytest.mark.djangodb, Fixtures, Testing views.

📅 30.06.2026 👁️ 132
📝

What is an ORM

ORM (Object-Relational Mapping) is a technology that lets you work with a database through Python...

📅 30.06.2026 👁️ 131
📝

SQLite in Python: Persistent Memory for Agents

SQLite is a relational database built into Python. It stores data in a single file...

📅 30.06.2026 👁️ 84

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!