IT TIP

장고에서 모델에 기본 타임 스탬프 필드가 있습니까?

itqueen 2020. 10. 13. 19:57
반응형

장고에서 모델에 기본 타임 스탬프 필드가 있습니까?


장고에서-모든 객체에 대한 기본 타임 스탬프 필드가 있습니까? 즉, 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):
    ....

당신이 사용하는 경우 장고 - 확장 당신이 상속에 의해 무료로이 모델 필드를 얻을 수 있습니다합니다 (django-admin.py 명령 줄 도우미에 기능을 추가하기위한 좋은 응용 프로그램입니다) 자신의 TimeStampedModel 자신 또는 사용하여 사용자 정의 타임 스탬프 필드를


django-extensions를 사용해 볼 수 있습니다.

타임 스탬프 추상 모델을 사용하려는 경우

from django_extensions.db.models import TimeStampedModel

class A(TimeStampedModel):
   ...

다른 추상 모델이 있습니다. 그것도 사용할 수 있습니다.


이 필드를 수정할 수 있도록하려면 대신 다음을 설정하십시오. auto_now_add=True:

날짜

from datetime import date

models.DateField(default=date.today)

DateTime의 경우

from django.utils import timezone

models.DateTimeField(default=timezone.now)

나는 함께 갈 것이라고 생각한다

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

참고 URL : https://stackoverflow.com/questions/8016412/in-django-do-models-have-a-default-timestamp-field

반응형