django datetimefield에 한국 시간 저장

·2020년 9월 1일
0

좌충우돌

목록 보기
16/26

목적

data instance를 추가하는 시각을 데이터의 datetimefield에 추가해서 저장하고 싶었다.

개발 환경

python-3.6.9
django-3.0.3
django-rest-framework-3.11.0

결론

input_data = {
        "tempHumid": "20",
        "heartRate": "40",
        "sound": "50",
        "stepCount": "50",
}

일 때,

output_data = {
	'data': {
    	'nowTime': '2020-09-01T15:19:11.677268',
        'tempHumid': '20',
        'heartRate': '40',
        'sound': '50',
        'stepCount': '50'
    },
    'status': 'success'
}

을 response로 받는 결과가 나온다. 이때, nowTime은 한국시간에 해당해야 하고, post한 해당 시각이어야 한다.

과정

그래서

# Myproject/settings.py

# Internationalization
USE_TZ = False
TIME_ZONE = 'Asia/Seoul'

이때 USE_TZ를 꼭 False로 바꿔줘야 추후 models.py 코드 중 Timezone.now()가 한국시간으로 제대로 저장이 된다.

# WearerData/models.py

class WearerData(models.Model):
    user = models.ForeignKey(to=CustomUser, on_delete=models.CASCADE)
    # ****아래 코드가 해당 코드****
    nowTime = models.DateTimeField(
        _('nowTime'), default=timezone.now(), null=True)
    # (생략)

DateTimeField에 default로 timezone.now()를 하고, null을 허용해줘야 한다.

그러면 위 결론에서와 같이 time도 잘 저장이 된다.
auto_now, auto_now_add는 낯설어서 아직 쓰지 못했는데, stackoverflow에 가니까 django 1.X 버전에서는 버그가 많았던 것 같다. 나중에 auto_now등을 연구해봐야겠다.

profile
이것저것 개발하는 것 좋아하지만 서버 개발이 제일 좋더라구요..

0개의 댓글