Tracking dirty fields on a Django model