TIL/Django

TIL.70 auto_now VS auto_now_add 차이

codermun 2020. 12. 17. 13:18
728x90
반응형

Django의 ModelField 중 DateField , DateTimeField 필드의 옵션으로 사용되는

auto_now 와 auto_now_add의 차이에 대해 알아보자.


먼저 DateFieldDateTimeField는 언제 사용하는지 알아보자.

DB 에서 CURRENT_TIMESTAMP 로 생성되야하는 정보일때 해당 필드를 사용하는데

예를 들어

게시물을 작성한 시간, 리뷰를 작성한 시간, 작성한 게시물을 수정한 시간, 리뷰의 리뷰를 작성할때의 시간 등

DB에 Timesatamp로 생성되어 저장되어야 하는 정보의 column 값을 지정해줄때 위와 같은 필드를 사용한다.

보통 최초 생성 시간 (created_at) 과 수정 시간 (updated_at) 2가지를 모두 구성해주는것이 컨벤션이다.


DateField와 DateTimeField에는 auto_now , auto_now_add 등의 속성이 존재한다.

본격적으로 auto_now 와 auto_now_add의 차이에 대해 알아보자.

출처 : https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.DateField

 

 

  • 수정일자 : auto_now=True 사용
    auto_now=True 는 django model 이 save 될 때마다 현재날짜(date.today()) 로 갱신됩니다.
    주로 최종수정일자 field option 으로 주로 사용됩니다. 
  • 생성일자 : auto_now_add=True 사용
    auto_now_add=True 는 django model 이 최초 저장(insert) 시에만 현재날짜(date.today()) 를 적용합니다.

즉, created_at 은 최초 생성시만 기입해주는 auto_now_add=True 사용하며

updated_at  auto_now=True 를 지정하여 사용하면 된다.

 

create_at 은 시간을 다시 갱신하지 않고 최초 생성 시간을 1번 사용하여 저장되는 것(갱신 불가능)

updated_ad은 시간을 계속 갱신하여 장고 모델이 저장될때마다 현재날짜(시간)으로 갱신되는 것이다.(갱신 가능)

 

728x90
반응형