Вы не можете действительно отключить auto_now / auto_now_add другим способом, чем вы уже делаете.Если вам нужна гибкость для изменения этих значений, auto_now
/ auto_now_add
не лучший выбор.Часто более гибко использовать default
и / или переопределять метод save()
для выполнения манипуляций непосредственно перед сохранением объекта.
Использование default
и переопределенный метод save()
, один из способоврешить вашу проблему можно было бы определить вашу модель следующим образом:
class FooBar(models.Model):
createtime = models.DateTimeField(default=datetime.datetime.now)
lastupdatetime = models.DateTimeField()
def save(self, *args, **kwargs):
if not kwargs.pop('skip_lastupdatetime', False):
self.lastupdatetime = datetime.datetime.now()
super(FooBar, self).save(*args, **kwargs)
В вашем коде, где вы хотите пропустить автоматическое изменение времени последнего обновления, просто используйте
new_entry.save(skip_lastupdatetime=True)
Если ваш объектсохраненные в интерфейсе администратора или в других местах, save () будет вызываться без аргумента skip_lastupdatetime, и он будет вести себя так же, как и раньше с auto_now
.