2013-07-16 1 views
1

진정한 마이그레이션 및 USE_TZ =이 django.utils.timezone.now() 를 사용하여 aware-time를 사용하는 나는 default=timezone.now를 사용하는 datetimefield을 변경하고 변경 후 settings.py장고 남쪽으로 내 모든 코드를 변경했습니다

USE_TZ=True을 설정, 나는 남쪽 schemamigration를 실행 명령을 실행하면 데이터베이스 필드가 변경됩니다.

중요한 경우 남쪽 0.7.6 및 postgresql을 사용하고 있습니다.

다음은 전체 사이트를 시간대에 알리기 위해 만든 세부적인 변경 사항입니다.
how do I make my site timezone aware?

+0

중복 된 http://stackoverflow.com/questions/10994101/django-1-4-use-tz-migration-database-part-best-practices – Bryce

답변

0

당신은 남쪽으로 사용하고, USE_TZ=TrueUSE_TZ=False를 변경하는 경우, 모든 이전 마이그레이션 가능성이 휴식 것입니다, 당신은 같은 오류를 얻을 것이다 :

RuntimeWarning: DateTimeField received a naive datetime (XXX) 
while time zone support is active 

을 나는 남쪽을 할 수있는 방법을 발견하지 않았습니다 settings.py에서 변경 내용을 추적하십시오. 내가 한 것은 실제 마이그레이션 파일을 변경하는 것입니다. 이들 각각에는 숫자가 있으며 migrations 서브 디렉토리에 있습니다.

실패한 각각에 대해 from django.utils import timezone을 추가하고 주 코드에서와 같은 방식으로 모든 DateTimeField 필드를 수정합니다 (시간대를 인식하거나 특정 비 시간대 기본 날짜를 제거함).

reset your south migration history으로 시도해 볼 수 있습니다.

0

건물의 브라이스의 대답에, 이들은 우리가 우리의 남쪽으로의 마이그레이션을 변환하는 데 사용 bash는 스크립트입니다 시간대 인식 ". 엘 카피 탄"OS X 10.11.5에 사용

$ cd mysite/mainapp/migrations 
$ find ./ -type f -exec sed -i -e 's/datetime.datetime.now/timezone.now/g' {} \; 
$ find ./ -type f -exec sed -i -e '/import datetime/{G;s/$/from django.utils import timezone/;}' {} \;