장고에서-모든 객체에 대한 기본 타임 스탬프 필드가 있습니까? 즉, Model에서 'created on'에 대한 'timestamp'필드를 명시 적으로 선언해야합니까? 아니면 자동으로 가져올 수있는 방법이 있습니까?
답변:
기본적으로 그러한 것은 없지만 하나를 추가하는 것은 매우 쉽습니다. 클래스 에서 auto_now_add
매개 변수를 사용하십시오 DateTimeField
.
created = models.DateTimeField(auto_now_add=True)
auto_now
'업데이트 날짜'필드 에도 사용할 수 있습니다 . auto_now
여기서 의 동작을 확인 하십시오 .
auto_now_add
여기 를 위해 .
두 필드가 모두있는 모델은 다음과 같습니다.
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.Model
class MyFutureModels(TimeStampedModel):
....
created
및에 대한 타임 스탬프가 필요한 3 개의 클래스가 updated
있습니다. 이것은 깨끗하게하는 좋은 방법입니다.
당신이 사용하는 경우 장고 - 확장 당신이 상속에 의해 무료로이 모델 필드를 얻을 수 있습니다합니다 (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
model_utils
이미 포함 된 Django 도TimeStampedModel
있지만이 패키지에서 다른 것이 필요하지 않으면 추가 중량없이 유지하십시오.