🗄️ Lesson 52: Django Models & ORM (Database Handling in Depth)
1. Django Model ဆိုတာဘာလဲ?
မြန်မာ → Django Model ဆိုတာ database table ကို ကိုယ်စားပြုတဲ့ Python class တစ်ခု။ Model တစ်ခုရေးလိုက်တာနဲ့ Django ORM က database table တစ်ခုအဖြစ် ပြောင်းပေးမယ်။
English → A Django Model is a Python class that maps to a database table using Django's ORM.
2. Why Use ORM?
- SQL query မရေးဘဲ Python code နဲ့ database ကို ကိုင်တွယ်နိုင်တယ်
- Database independent → SQLite, PostgreSQL, MySQL တို့အတွက် တူညီ code သုံးနိုင်တယ်
- Security → SQL injection ကာကွယ်ပေးတယ်
3. အကျဉ်းချုပ်
✅ Django Model = database table ကို ကိုယ်စားပြုတဲ့ Python class
✅ ORM → SQL မရေးဘဲ CRUD လုပ်နိုင်တယ်
✅ Migration → model changes ကို database ထဲ reflect လုပ်မယ်
✅ Admin panel → model data ကို 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