Я добавляю поля date_added и date_modified к группе общих моделей в моем текущем проекте. Я создаю подклассы models.Model и добавляю соответствующие поля, но я хочу добавить автоматическое поведение сохранения (то есть: каждый раз, когда кто-либо вызывает MyModel.save (), поле date_modified обновляется. Я вижу два подхода: переопределение метода save () или добавление обработчика сигнала pre_save в абстрактный базовый класс.
class CommonData(models.Model):
date_added = models.DateTimeField(default=datetime.datetime.today,null=False,blank=False)
date_modified = models.DateTimeField(default=datetime.datetime.today,null=True,blank=True)
# register a handler for the pre_save to update date_modified
def pre_save_handler(sender, **kwargs):
date_modified = datetime.datetime.today
def __init__():
pre_save.connect(pre_save_handler, sender=self)
или
class CommonData(models.Model):
date_added = models.DateTimeField(default=datetime.datetime.today,null=False,blank=False)
date_modified = models.DateTimeField(default=datetime.datetime.today,null=True,blank=True)
# overriding save
def save(force_insert=False,force_update=False):
date_modified = datetime.datetime.now
return models.Model.save(force_insert, force_update)
Я новичок в Django и Python, и мне интересно, какой подход был более "django"? Что является более эффективным? Какой «правильный» способ сделать это?