python / intermediate
Snippet
Django Model Meta Options and Field Ordering
The Django Meta class configures model-level behavior without adding database columns. The ordering option automatically sorts QuerySet results, improving consistency. Indexes optimize query performance on frequently filtered fields. Constraints enforce data validation at the database level, catching invalid data even through raw SQL.
snippet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100)price = models.DecimalField(max_digits=10, decimal_places=2)description = models.TextField()created_at = models.DateTimeField(auto_now_add=True)class Meta:ordering = ['-created_at', 'name']indexes = [models.Index(fields=['price', 'name']),models.Index(fields=['created_at']),]constraints = [models.CheckConstraint(check=models.Q(price__gte=0),name='product_price_positive'),]verbose_name = 'Product'verbose_name_plural = 'Products'def __str__(self):return self.name
django
Breakdown
1
class Meta:
Inner class containing model-level configuration options
2
ordering = ['-created_at', 'name']
Sorts by created_at descending (minus prefix), then name ascending
3
models.Index(fields=['price', 'name'])
Composite index for queries filtering by price and name together
4
models.CheckConstraint(check=models.Q(price__gte=0))
Database-level validation ensuring price cannot be negative