Django 2

장고(Django)에서 datetime 객체를 조작할 때 유의할 점. (UTC 시간대를 로컬 타임존으로 정확하게 변환하기)

datetime 객체를 다루는 과정에서 타임존을 신경 쓰지 않으면, 날짜가 불일치하는 등의 문제가 발생할 수 있다. 날짜 객체들이 사용하기 어려운 건 아닌데, 소홀히 하기 쉬워서 오류가 발생하기 쉬운 것 같다. 이번 포스트에서는 데이터베이스에 저장된 UTC 시간을 가져와서 사용할 때 주의해야 할 사항을 정리해 보겠다. [Prerequisite]Naive & Aware datetime object - naive : datetime object에 tzinfo(타임존 정보)가 없는 datetime 객체- aware: datetime object에 tzinfo(타임존 정보)가 있는 datetime 객체  Django 프로젝트에서는 아래와 같이 세팅 파일에 USE_TZ = True로 설정하면, 모든 datetim..

Django 2024.08.14

장고에서 auto_now_add=True 인 필드 값을 커스텀 값으로 넣고 싶을 때

장고에서 모델을 정의할 때 date나 datetime 필드인 경우에 auto_now_add=True 옵션을 주는 경우가 많다. 이 옵션은 object 가 최초로 생성될 때 자동으로 해당 필드를 현재시각(날짜)로 세팅해준다. 그런데 이 값은 내가 원하는 값으로 오버라이드 할 수가 없기 때문에, 만약 객체 생성 시에 원하는 다른 값을 넣어준다면 무시된다. 그래서 만약에 테스트나 다른 이유로 auto_now_add=True 인 필드에 커스텀 값을 넣어주어야 한다면, 생성 후에 save() 를 통해 값을 업데이트 해주는 것이 간편하다. (나는 테스트 때문에 객체의 created_at 필드를 마치 과거에 생성된 것 처럼 만들어야 해서 이 방법을 사용했다) auto_now_add 옵션은 처음 생성될 때만 그때의 시..

Django 2024.08.13