Auto Now
Auto Now
Django ORM에서 models.DatetimeField의 속성 중 auto_now=True를 설정할 경우, 매 save()시 날짜가 갱신된다.
만일 생성 시에만 현재 시간을 추가하고 싶다면 auto_now_add=True를 사용하면 QuerySet.create()시에만 날짜가 할당된다.
auto_now_add=True 대신 default=timezone.now()를 쓸 경우 warning이 발생한다. (상수가 아니기 때문)
주의
다음과 같이 객체 생성 후 저장 시 해당 필드는 null값이 할당된다.
test = Test()test.save()
해당 방법으로 생성하면 create()함수가 호출되지 않기 때문. 따라서 위와 같이 사용하려면 다음과 같이 처리해야한다.
test = Test()test.created_at = timezone.now() # 명시적으로 필드를 지정test.save()
또한 QuerySet.update() 호출시에도 갱신되지 않는다. 이 경우 역시 update 시 직접 시간을 지정해줘야 한다.
auto_now, auto_now_add, default는 상호 배제적이므로 섞어 쓸 경우 오류가 발생한다.
Reference
https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.DateField.auto_now
