Antworten:
Standardmäßig gibt es so etwas nicht, aber das Hinzufügen eines ist super einfach. Verwenden Sie einfach den auto_now_add
Parameter in der DateTimeField
Klasse:
created = models.DateTimeField(auto_now_add=True)
Sie können es auch auto_now
für ein Feld "Aktualisiert am" verwenden. Überprüfen Sie das Verhalten von auto_now
hier .
Für auto_now_add
hier .
Ein Modell mit beiden Feldern sieht folgendermaßen aus:
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Automatisch klingt es nicht so, als würde Django standardmäßig etwas tun. Es würde Sie nicht zwingen, einen Zeitstempel zu benötigen.
Ich würde eine abstrakte Basisklasse erstellen und alle Modelle davon erben, wenn Sie den Zeitstempel / Feldnamen usw. nicht vergessen möchten.
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
Es scheint nicht viel zu importieren wherever.TimeStampedModel
stattdjango.db.models.Model
class MyFutureModels(TimeStampedModel):
....
created
und brauchten updated
. Dies ist eine großartige Möglichkeit, es sauber zu machen.
Wenn Sie django-Erweiterungen verwenden (eine gute App zum Hinzufügen von Funktionen zum Befehlszeilen-Helfer django-admin.py), können Sie diese Modellfelder kostenlos herunterladen, indem Sie von ihrem TimeStampedModel erben oder ihre benutzerdefinierten TimeStamp-Felder verwenden
Sie können Django-Erweiterungen ausprobieren
Wenn Sie ein abstraktes Zeitstempelmodell verwenden möchten
from django_extensions.db.models import TimeStampedModel
class A(TimeStampedModel):
...
Es hat andere abstrakte Modelle. das kannst du auch benutzen.
Ich denke, ich würde mitgehen
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
Ich brauche einige Klarstellungen zur Verwendung
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
model_utils
für Django, das bereits enthältTimeStampedModel
, aber wenn Sie nichts anderes von diesem Paket benötigen, behalten Sie es einfach ohne zusätzliches Gewicht.