Custom list display of model timestamps for Django Admin.
Show human readable created/modified dates and/or times in the django.contrib.admin changelist for models that track the moment of creation and updates.
First you will need to have a model that tracks the moment of creation and modification. The barebones example for that is:
from django.db import models class TimestampedItem(models.Model): created = models.DateTimeField('created', auto_now_add=True) modified = models.DateTimeField('modified', auto_now=True)
Or, if you are using django-extensions:
from django_extensions.db.models import TimeStampedModel class TimestampedItem(TimeStampedModel): pass
Now it’s time to register this model with Django’s admin site.
Create a admin class, just like you’d usually do, but make it extend TimestampedAdminMixin as well as any other base admin class you use:
from django.contrib import admin from models import TimestampedItem from admintimestamps import TimestampedAdminMixin class TimestampedAdmin(TimestampedAdminMixin, admin.ModelAdmin): pass admin.site.register(TimestampedItem, TimestampedAdmin)
If the names of you timestamp fields aren’t created and modified but for example created_at and modified_at you’ll need to do a tiny bit of configuration in the model admin class:
class TimestampedAdmin(TimestampedAdminMixin, admin.ModelAdmin): timestamp_fields = ('created_at', 'modified_at')
You can also use the timestamp_fields tuple to only show one field by only specifying the field you want to show:
class TimestampedAdmin(TimestampedAdminMixin, admin.ModelAdmin): timestamp_fields = ('modified',)
Changelog for django-admin-timestamps
- Dropped support for Python < 2.6
- Dropped support for Django < 1.4
- Verified support for up to Django 1.7
- Added support for Python 3
- Handle None values properly
- Just displaying one timestamp field is now possible.
- Proper handling of date fields.
- Fixed setup.py to include the compat subpackage
- Initial release