데이터의 생성 일시와 수정 일시를 저장할 땐 대개 아래 두가지를 사용한다. auto_now_add는 최초로 생성할 시에만 들어가고, auto_now는 저장될 때마다 업데이트 된다. 둘 다 직접적으로 건드릴 수 없다.(editable=False)
created_at = DateTimeField(auto_now_add=True)
updated_at = DateTimeField(auto_now=True)
이런 column은 당장 사용하지 않더라도 확장성을 고려하여 나중에 필요할 법한 곳에 미리 추가해두는 게 좋다. DB에 이미 저장되어 있는 데이터가 있는데 DateTimeField를 추가하고자 한다면 이 column에 값을 채워넣어야 되기 때문에 아래와 같은 메세지가 나온다.
3을 선택해서 나간 뒤 models.py의 DateTimeField에 null=True를 입력해도 같은 메세지가 뜬다.
timezone.now()를 치면 이미 들어가 있던 데이터의 생성 일시와 수정 일시를 현재로 넣어준다.
이 때 어떤 시간대를 사용한 데이터가 DB에 들어가는지는 settings.py의 설정에 달려있다. 한국 시간을 사용하기 위해 TIME_ZONE을 Asia/Seoul로 바꾸더라도 USE_TZ = True 면 장고의 default인 UTC를 사용한다. 이걸 False로 설정하면 모든 datetime이 TIME_ZONE의 시간대를 사용한다. 참고 링크
더 공부할 것
데이터를 바로 create해서 넣는 게 아니라 객체 생성 후 저장하는 방식에서는 auto_now_add 속성이 True로 되어있는 column이 null로 들어가는 이슈가 있다고 한다. 정말 그런지 확인하기. 참고 링크
'Django' 카테고리의 다른 글
Django 속이기 - migration 파일 직접 수정 (0) | 2021.03.13 |
---|---|
DB에 csv로 초기 데이터 넣기 (0) | 2021.02.27 |
django.db.utils.IntegrityError: NOT NULL constraint failed (0) | 2021.02.21 |
TemplateSyntaxError: 'pybo_filter' is not a registered tag library (0) | 2021.02.21 |
백엔드 서버 되어보기 (0) | 2021.02.06 |