Я делал это несколько раз:
class TimeStampedModel(models.Model):
"""
An abstract base class model that provides self-
updating 'created' and 'modified' fields
"""
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
и для других моделей:
from core.models import TimeStampedModel
class MyClass(TimeStampedModel):
"""
CLASS LAMBDA
"""
field = models.DecimalField(verbose_name=u"Name", max_digits=7, decimal_places=2)
field2 = models.CharField(verbose_name=u"Name 2", max_length=200)
Сейчас в ipython
:
from bundle.models.my_class import MyClass
item = MyClass.objects.first()
print item.created
Теперь created
устанавливается, когда запись created
(auto_now_add=True
), а modified
- когда вы .... modified
ваша запись (auto_now=True
).
Магия, это абстрактный класс ( документ здесь ):
Абстрактные базовые классы полезны, когда вы хотите поместить некоторую общую информацию в ряд других моделей. Вы пишете свой базовый класс и помещаете abstract = True в мета-класс. Эта модель не будет использоваться для создания таблицы базы данных. Вместо этого, когда он используется в качестве базового класса для других моделей, его поля будут добавлены к полям дочернего класса.