🗄️ Lesson 52: Django Models & ORM (Database Handling in Depth)
1. What is a Django Model?
In short → A Django Model is a Python class that represents a database table. As soon as you write a Model, the Django ORM turns it into a database table.
English → A Django Model is a Python class that maps to a database table using Django's ORM.
2. Why Use ORM?
- Lets you handle the database with Python code instead of writing SQL queries
- Database independent → the same code works for SQLite, PostgreSQL, MySQL, and more
- Security → protects against SQL injection
3. Summary
✅ Django Model = a Python class that represents a database table
✅ ORM → do CRUD without writing SQL
✅ Migration → reflects model changes into the database
✅ Admin panel → manage model data through a GUI
python
# ===== 1. Django Model Example =====
print("===== Model Definition =====")
print("# myapp/models.py")
print("from django.db import models")
print("")
print("class Task(models.Model):")
print(" title = models.CharField(max_length=100)")
print(" completed = models.BooleanField(default=False)")
print("")
print(" def __str__(self):")
print(" return self.title")
# ===== 2. Database Migration =====
print(f"\n===== Migration Commands =====")
print("# python manage.py makemigrations")
print("# python manage.py migrate")
# ===== 3. ORM Operations =====
print(f"\n===== ORM Operations (Django Shell) =====")
print("# python manage.py shell")
print("")
print("# Create")
print("task1 = Task(title='Learn Django', completed=False)")
print("task1.save()")
print("")
print("# Read")
print("tasks = Task.objects.all()")
print("# Returns: <QuerySet [<Task: Learn Django>]>")
print("")
print("# Filter")
print("done = Task.objects.filter(completed=True)")
print("")
print("# Update")
print("task1.completed = True")
print("task1.save()")
print("")
print("# Delete")
print("task1.delete()")
# ===== 4. Admin Panel Integration =====
print(f"\n===== Admin Panel =====")
print("# myapp/admin.py")
print("from django.contrib import admin")
print("from .models import Task")
print("")
print("admin.site.register(Task)")
# ===== 5. Real-World Use Cases =====
print(f"\n===== Use Cases =====")
print("✅ To-Do List → Task model")
print("✅ Blog → Post, Comment models")
print("✅ E-commerce → Product, Order, Customer models")
print("✅ Social Media → User, Post, Like models")You should see
===== Model Definition ===== # myapp/models.py from django.db import models class Task(models.Model): title = models.CharField(max_length=100) completed = models.BooleanField(default=False) def __str__(self): return self.title ===== Migration Commands ===== # python manage.py makemigrations # python manage.py migrate ===== ORM Operations (Django Shell) ===== # python manage.py shell # Create task1 = Task(title='Learn Django', completed=False) task1.save() # Read tasks = Task.objects.all() # Returns: ]> # Filter done = Task.objects.filter(completed=True) # Update task1.completed = True task1.save() # Delete task1.delete() ===== Admin Panel ===== # myapp/admin.py from django.contrib import admin from .models import Task admin.site.register(Task) ===== Use Cases ===== ✅ To-Do List → Task model ✅ Blog → Post, Comment models ✅ E-commerce → Product, Order, Customer models ✅ Social Media → User, Post, Like models