6 ответов:
нет такой вещи по умолчанию, но добавление одного супер-легко. Просто используйте на
DateTimeFieldкласс:created = models.DateTimeField(auto_now_add=True)вы также можете использовать
auto_nowдля поля 'updated on'. Проверьте их поведение в документе.модель с обоими полями будет выглядеть так:
class MyModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
автоматически не похоже на то, что django будет делать по умолчанию. Это не заставит вас требуют времени.
Я бы построил абстрактный базовый класс и унаследовал от него все модели, если вы не хотите забывать о метке времени / имени Поля и т. д.
class TimeStampedModel(models.Model): created_on = models.DateTimeField(auto_now_add=True) class Meta: abstract = Trueэто не похоже на многое, чтобы импортировать
wherever.TimeStampedModelвместоdjango.db.models.Modelclass MyFutureModels(TimeStampedModel): ....
Если вы используете django-extensions (что является хорошим приложением для добавления функциональности к django-admin.py помощник командной строки) вы можете получить эти поля модели бесплатно, наследуя от их TimeStampedModel или используя их пользовательские поля временных меток
вы можете попробовать django-extensions
Если вы хотите использовать абстрактную модель с отметкой времени
from django_extensions.db.models import TimeStampedModel class A(TimeStampedModel): ...Он имеет другие абстрактные модели. это тоже можно использовать.
Я думаю, что я пойду с
created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True)мне нужны некоторые разъяснения об использовании
class TimeStampedModel(models.Model): created_on = models.DateTimeField(auto_now_add=True) class Meta: abstract = True
Если вы хотите изменить это поле, установите вместо
auto_now_add=True:На Дату
from datetime import date models.DateField(default=date.today)Для DateTime
from django.utils import timezone models.DateTimeField(default=timezone.now)
Comments