В чем разница между параметрами timezone.now и auto_now_add в поле DateTimeField в моделях Django?
Я пишу свое первое приложение на Django - блог. При создании модели Post меня просят создать publish и созданные поля с импортом timezone.
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
Поясняется, что "При использовании auto_now_add дата будет сохранена автоматически при создании объекта" и "timezone.now возвращает текущую дату в формате, учитывающем временные зоны".
Мне кажется, что они оба выполняют одну и ту же задачу. Почему бы не использовать default=timezone.now в обоих полях? В чем разница? Это мой первый вопрос, поэтому заранее извините, если я допустил какие-то ошибки.
Они одинаковы, за исключением одного: auto_now_add=True
переопределяет любое начальное значение, переданное вами при создании объекта, тогда как default=timezone.now
позволит вам установить собственное, другое значение.
Вы можете прочитать это в документах
auto_now_add
будет устанавливать timezone.now()
только при создании экземпляра, а auto_now
будет обновлять поле каждый раз, когда вызывается метод сохранения.
default=timezone.now
означает установку текущего времени по умолчанию при добавлении или изменении поля для модели, которая уже существует, так как в базе данных могут быть записи, и вам нужно указать, что заполнять для этих существующих записей.
Спасибо!