문제

나는 UTC에 저장해야 할 모든 Postgres를 표현한 DateTime 필드가 필요한 Django 애플리케이션에서 작업하고 있습니다. DateTime 필드로 모델을 만들 때 데이터베이스 표현은 "로 생성됩니다.시간대가있는 타임 스탬프". 필드에서 시간대를 제거하기 위해 테이블을 수동으로 변경할 수는 있지만 DateTime 모델 필드가 그렇게하지 않을 수 있는지 궁금했습니다.시간대 아웃 시간대가있는 타임 스탬프"일부 필드의 경우. 가능합니까? 아니면 테이블을 변경해야합니까? 감사합니다, Harel

도움이 되었습니까?

해결책

Django의 Postgres의 데이터 유형은 문자열 리터럴에 대한 맵 timestamp with time zone, 그리고 그 유형을 변경하는 옵션이없는 것 같습니다.

내가 아는 한, 당신은 세 가지 옵션이 있습니다.

  1. 실행을위한 Django의 고리를 활용하십시오 생성 테이블 명령문 다음에 원시 SQL. 이를 위해 호출 된 디렉토리를 만듭니다 sql 앱과 해당 디렉토리의 파일에서 mymodel.postgres_psycopg2.sql. Alter Table 문을 거기에 놓으십시오.

  2. 맞춤 제작 필드의 수정자를 정의하기 위해 사용자 정의 필드를 작성하십시오. 보다 "맞춤형 모델 필드를 작성합니다".

  3. Django 필드를 그대로두고 응용 프로그램에서 시간대 변환을 수행하여 올바른 시간을 전달하고 있다고 확신하십시오.

데이터 무결성에 대한 개인적인 선호는 #3입니다. 문자 인코딩과 마찬가지로, 당신이 항상 숯을 알고 전환을 올바르게 처리하고 싶어하는 캐릭터 인코딩과 마찬가지로, 나는 속성 (TZ 포함)이 가능한 한 정확하게 정의 된 날짜/시간에 훨씬 더 편안하다고 느낍니다. 오늘 귀하는 모든 입력이 이미 UTC에있는 앱에오고 있음을 확신 할 수 있지만, 특히 타임 스탬프가 최종 사용자가 제공하는 경우 변경 될 수 있습니다. 가치가있는 것에 대해, 나는 추가 마일을 가서 앱의 타임 스탬프를 UTC로 변환 한 다음 UTC를 시간대로 UTC로 DB에 보관할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top