Django ORM translates Python code to SQL queries.
1from .models import Article, User23# Get all articles4articles = Article.objects.all()56# Filter7published = Article.objects.filter(published=True)8by_author = Article.objects.filter(author__name="Alice")910# Exclude11drafts = Article.objects.exclude(published=True)1213# Get single object14article = Article.objects.get(id=1) # Raises exception if not found15article = Article.objects.filter(id=1).first() # Returns None1617# Ordering18articles = Article.objects.order_by("-created_at")1920# Chaining21results = (22 Article.objects23 .filter(published=True)24 .order_by("-created_at")25 .select_related("author")26 .only("title", "author__name")27)2829# Aggregation30from django.db.models import Count, Avg31stats = Article.objects.aggregate(32 count=Count("id"),33 avg_views=Avg("views_count")34)3536# Q objects for complex queries37from django.db.models import Q38articles = Article.objects.filter(39 Q(title__icontains="python") | Q(content__icontains="django")40)
Performance tips:
select_related() — JOIN for ForeignKey.prefetch_related() — separate query for ManyToMany.only() — select specific columns.defer() — exclude specific columns.