최대 1 분 소요

auto_now 와 auto_now_add 의 차이


django에서 날짜/시간 타입의 모델 필드로서 DateField, DateTimeField 를 주로 사용한다.


그리고 해당 필드의 옵션으로 사용되는 auto_nowauto_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 될 때는 저장 되지 않기 때문이다.


댓글남기기