auto_now 와 auto_now_add 차이
auto_now 와 auto_now_add 의 차이
django에서 날짜/시간 타입의 모델 필드로서 DateField, DateTimeField 를 주로 사용한다.
그리고 해당 필드의 옵션으로 사용되는 auto_now
와 auto_now_add
에 대해서 알아보자.
우선 공통점으로 두 설정 모두 현재 일시를 데이터에 저장하는 기능을 한다.
DateTimeField 코드를 보면 pre_save 로 해당 옵션에 대한 기능이 구현되어있다.
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = timezone.now()
setattr(model_instance, self.attname, value)
return value
else:
return super().pre_save(model_instance, add)
장고 공식문서에 따르면 두 옵션을 사용목적에 따라 분류해놓았다.
원문은 좀 길지만 간추려보자면
수정일자 : auto_now = Ture 사용
생성일자 : auto_now_add = True 사용
이다.
이렇게 분류되는 이유는 auto_now_add 의 경우 ORM을 통해 SQL에서 INSERT 될 때에만 현재일시가 저장이 되고 UPDATE 될 때는 저장 되지 않기 때문이다.
댓글남기기