mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:11:13 -05:00
1.3 KiB
1.3 KiB
Decision: Universal Model History via django-pghistory
Pattern Implementation
- Tracking Method:
pghistory.Snapshot()applied to all concrete models - Inheritance Strategy: Base model class with history tracking
- Context Capture:
# core/models.py import pghistory class HistoricalModel(models.Model): class Meta: abstract = True @pghistory.track(pghistory.Snapshot()) def save(self, *args, **kwargs): return super().save(*args, **kwargs)
Integration Scope
-
Model Layer:
- All concrete models inherit from
HistoricalModel - Automatic event labeling:
@pghistory.track( pghistory.Snapshot('model.create'), pghistory.AfterInsert('model.update'), pghistory.BeforeDelete('model.delete') )
- All concrete models inherit from
-
Context Middleware:
# core/middleware.py pghistory.context(lambda request: { 'user': str(request.user) if request.user.is_authenticated else None, 'ip': request.META.get('REMOTE_ADDR'), 'user_agent': request.META.get('HTTP_USER_AGENT'), 'session_key': request.session.session_key }) -
Admin Integration:
- Custom history view for Django Admin
- Version comparison interface