Tenemos un modelo base que establece un campo creado y modificado:
class BaseModel(models.Model): created = models.DateTimeField(_('created'), auto_now_add=True) modified = models.DateTimeField(_('modified'), auto_now=True) ... other default properties class Meta: abstract = TrueUsamos esta clase para extender nuestros modelos:
class Event(BaseModel):¿Hay alguna forma de anular la fecha de creación al crear nuevos eventos?
Esta es una versión simplificada de nuestro código. Estamos enviando una matriz de objetos de eventos que contienen una marca de tiempo creada en nuestra carga útil de solicitud. Después de agregar los objetos a la base de datos, la propiedad creada se establece ahora y no el valor de la carga útil.
Todavía me gustaría ampliar desde BaseModel, ya que es posible que otras áreas del código no establezcan explícitamente un valor creado, en cuyo caso debería estar predeterminado ahora.
events = [] for e in payload['events']: event = Event( created=datetime.datetime.fromisoformat(e['created']) name='foo' ) events.append(event) Event.objects.bulk_create(events)Puede anular el campo created para su modelo de Event con:
from django.utils.timezone import now class Event(BaseModel): created = models.DateTimeField( default=now ) Si no desea que esto se muestre para ModelForm s y ModelAdmin s de forma predeterminada, puede utilizar editable=False [Django-doc] :
from django.utils.timezone import now class Event(BaseModel): created = models.DateTimeField(default=now, editable=False )