python / expert
Snippet
Dynamic Model Field Injection via Metaclass Class Decorators
Django model structures can be dynamically augmented using the internal contribute_to_class method within class decorators before ORM schema initialization.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.db import modelsdef add_audit_timestamp_fields(cls):created_field = models.DateTimeField(auto_now_add=True)updated_field = models.DateTimeField(auto_now=True)created_field.contribute_to_class(cls, 'created_at')updated_field.contribute_to_class(cls, 'updated_at')return cls@add_audit_timestamp_fieldsclass AuditLogEntry(models.Model):action = models.CharField(max_length=255)class Meta:app_label = 'analytics'
django
Breakdown
1
def add_audit_timestamp_fields(cls):
Defines a class decorator that takes a target Django Model class as input.
2
created_field.contribute_to_class(cls, 'created_at')
Calls Django's internal field lifecycle API to inject and register model fields dynamically.
3
@add_audit_timestamp_fields
Applies field injection during module load time before Django model setup completes.