Tracking Fields
A Django app allowing the tracking of objects field in the admin site.
Requirements
Django 4.2: See older versions for earlier version of Django.
Add the middleware to also store the current user:
MIDDLEWARE = ( ... "tracking_fields.middleware.cuser.CuserMiddleware", ... )
Quick start
Add “tracking_fields” to your INSTALLED_APPS settings.
Add the tracking_fields.decorators.track decorator to your models with the fields you want to track as parameters:
@track('test', 'm2m') class MyModel(models.Model): test = models.BooleanField('Test', default=True) m2m = models.ManyToManyField(SubModelTest, null=True)Your objects are now tracked. See the admin site for the tracking information.
If you want to track who does the changes, please install the django-cuser app.
You can also track fields of related objects:
class MyModel(models.Model): test = models.BooleanField('Test', default=True) @track('related__test') class MyOtherModel(models.Model): related = models.ForeignKey(MyModel)You can run the tests with tox (make sure to have django-cuser installed).
Upgrades from 0.1 or 1.0.1
The change to UUID is a mess to do in a migration. The migrations have thus been squashed. You can either alter your fields by hand and do a fake migration afterward or remove your tracking fields tables and run migrations again:
./manage.py migrate --fake tracking_fields zero ./manage.py migrate tracking_fields
FAQ
Why does my relationship change create two events ?
Please see https://docs.djangoproject.com/en/1.7/ref/models/relations/#direct-assignment
LICENSE
GPLv3+
Changelog
1.5.2 (2026-03-16)
Fix datetime.time serialization
1.5.1 (2026-03-06)
Add missing middleware file to release
1.5.0 (2026-03-05)
Drop Django support < 4.2
Add Django 6.0 support
Fix UUID serialization
Include cuse middleware inside tracking fields as it is no longer maintained
1.4.0 (2023-06-15)
Drop Django < 3.2 support
Add Django 4.2 support
Do not store M2M managers on the instance as original values.
Fix TrackerEventUserFilter performance.
1.3.7 (2022-04-07)
Do not tracked deferred related fields.
1.3.6 (2022-03-16)
Fix error on admin related to filtering content from deleted user
Fix deprecation warnings for Django 5.0.
Django 3.2 and 4.0 compatibility
1.3.5 (2022-03-09)
Increase max_length of TrackedFieldModification.field from 40 to 250
1.3.4 (2021-11-24)
Bulk create TrackedFieldModification
1.3.3 (2021-10-25)
Fix tracking of models with uuid ids
1.3.2 (2021-09-01)
Fix related event when there is no backward relation.
1.3.1 (2021-02-19)
Added get_object_model_verbose_name.
1.3.0 (2021-02-19)
Added get_object_model on TrackingEvent to be able to get model class in templates.
Fix deprecation warnings for Django 4.0.
Drop support for Django 2.0 and 2.1.
1.2.1 (2020-10-20)
Deferred fields are not tracked to avoid additional requests.
1.2.0 (2020-05-07)
fix ‘str’ object has no attribute ‘name’ #6
Django 3.0 compatibility
Drop support for Django 1.11
1.1.2 (2019-09-11)
added serialization for xworkflow StateWrapper
1.1.1 (2019-01-25)
Optimize admin user lookup
1.1.0 (2019-01-24)
Compatibility with Django 1.11 to 2.1
Compatibility droped for earlier versions
1.0.6
Fix unicode error in admin with Python 3.4 and django_cuser
1.0.5
Fix MANIFEST
1.0.4
Order TrackingEvent by -date
1.0.3
Fix MANIFEST
1.0.2
Include migrations in MANIFEST
1.0.0
Initial release
Metadata
Release files for django-tracking-fields 1.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django_tracking_fields-1.5.2.tar.gz | 62.0 kB | Without provenance | Details for django_tracking_fields-1.5.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_tracking_fields-1.5.2-py3-none-any.whl | Python 3 | none | any | Details for django_tracking_fields-1.5.2-py3-none-any.whl |
Total release size: 98.2 kB
Release files / django_tracking_fields-1.5.2.tar.gz
| Download URL | django_tracking_fields-1.5.2.tar.gz |
|---|---|
| Size | 62.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5538c1f41a635a8d01e2baf637a36339058cf8fa1c921356b6807c69f524c031
|
|
BLAKE2b-256 checksum How to use checksums |
5732741daa71725dca2d31cd0cdd942b397eae362cfd3fbaf4fdedce575e1186
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / django_tracking_fields-1.5.2-py3-none-any.whl
| Download URL | django_tracking_fields-1.5.2-py3-none-any.whl |
|---|---|
| Size | 36.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7eb2ac4386e9329c376f622df0aef1baf8eb351a18b9034c862451892495261d
|
|
BLAKE2b-256 checksum How to use checksums |
7c4f006bf5d482b30ef4a3afb9d7389e83f904444becc4b6ff07dc069ecefb10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Security for django-tracking-fields 1.5.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.