get_context_data - generic views django example
En django, ¿los modelos tienen un campo predeterminado de marca de tiempo? (4)
En django, ¿hay un campo predeterminado de marca de tiempo para todos los objetos? Es decir, ¿tengo que declarar explícitamente un campo de ''marca de tiempo'' para ''creado en'' en mi Modelo, o hay alguna manera de obtener esto automágicamente?
Automáticamente no suena como algo que django haría de forma predeterminada. No lo obligaría a exigir una marca de tiempo.
Construiría una clase base abstracta y heredaría todos los modelos si no quería olvidarme de la marca de tiempo / nombre de campo, etc.
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
No parece que importe mucho wherever.TimeStampedModel
django.db.models.Model
lugar de django.db.models.Model
class MyFutureModels(TimeStampedModel):
....
Puedes probar django-extensions
si quieres usar el modelo abstracto de sello de tiempo
from django_extensions.db.models import TimeStampedModel
class A(TimeStampedModel):
...
Tiene otros modelos abstractos. puedes usar eso también
Si está usando django-extensions (que es una buena aplicación para agregar funcionalidad al asistente de línea de comandos django-admin.py), puede obtener estos campos de modelo de forma gratuita al heredar de su TimeStampedModel o usar sus campos personalizados TimeStamp.
No existe tal cosa por defecto, pero agregar uno es súper fácil. Simplemente use el parámetro auto_now_add
en la clase DateTimeField
:
created = models.DateTimeField(auto_now_add=True)
También puede usar auto_now
para un campo ''actualizado en''. Verifique su comportamiento en el documento .
Un modelo con ambos campos se verá así:
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)