History Tracking
Overview
Automatic User Tracking
Web Requests
Programmatic Changes
# Using save_with_user (defaults to owner if no user provided)
campaign = Campaign(name="My Campaign", owner=user)
campaign.save_with_user(user=admin_user)
# Using create_with_user (defaults to owner if no user provided)
campaign = Campaign.objects.create_with_user(
user=admin_user,
name="My Campaign",
owner=user
)
# Using bulk operations with history
campaigns = [Campaign(name=f"Campaign {i}", owner=user) for i in range(3)]
Campaign.bulk_create_with_history(campaigns, user=admin_user)Default User Behavior
History Models
Querying History
All History for a Model
Recent Changes
Changes by User
Comparing Versions
Bulk Operations
Best Practices
Management Commands
Data Migrations
Testing
Performance Considerations
History Volume
Query Optimization
Troubleshooting
Missing User Information
Bulk Operations Not Tracked
History Not Created
Last updated