fields.py 930 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. from datetime import datetime
  2. from django.db import models
  3. from django.conf import settings
  4. try:
  5. from django.utils.timezone import now as now
  6. except ImportError:
  7. now = datetime.now
  8. class AutoCreatedField(models.DateTimeField):
  9. """
  10. A DateTimeField that automatically populates itself at
  11. object creation.
  12. By default, sets editable=False, default=datetime.now.
  13. """
  14. def __init__(self, *args, **kwargs):
  15. kwargs.setdefault("editable", False)
  16. kwargs.setdefault("default", now)
  17. super(AutoCreatedField, self).__init__(*args, **kwargs)
  18. class AutoLastModifiedField(AutoCreatedField):
  19. """
  20. A DateTimeField that updates itself on each save() of the model.
  21. By default, sets editable=False and default=datetime.now.
  22. """
  23. def pre_save(self, model_instance, add):
  24. value = now()
  25. setattr(model_instance, self.attname, value)
  26. return value