Django как изменить дату создания
У нас есть базовая модель, которая устанавливает созданное и измененное поле:
class BaseModel(models.Model):
created = models.DateTimeField(_('created'), auto_now_add=True)
modified = models.DateTimeField(_('modified'), auto_now=True)
... other default properties
Мы используем этот класс для расширения наших моделей:
class Event(BaseModel):
Есть ли способ отменить дату создания при создании новых событий?
Это урезанная версия нашего кода. В полезной нагрузке запроса мы отправляем массив объектов событий, содержащий метку времени создания. После добавления объектов в базу данных свойство created устанавливается в now, а не в значение из полезной нагрузки.
Я хотел бы по-прежнему расширяться от BaseModel, поскольку другие области кода могут не устанавливать явно созданное значение, и в этом случае оно должно быть по умолчанию равно now.
events = []
for e in payload['events']:
event = Event(
created='datetime.datetime.fromisoformat(e['created'])'
name='foo'
)
events.append(event)
Event.objects.bulk_create(events)
Вы можете переопределить поле created
для вашей Event
модели с помощью:
from django.utils.timezone import now
class Event(BaseModel):
created = models.DateTimeField(default=now)
Если вы не хотите, чтобы это отображалось для ModelForm
s и ModelAdmin
s по умолчанию, вы можете использовать editable=False
[Django-doc]:
from django.utils.timezone import now
class Event(BaseModel):
created = models.DateTimeField(default=now, editable=False)