로깅 다이빙 용 Django 앱을 개발 중이며 각 다이빙에는 datetime과 시간대가 있습니다. 시간대에 django-timezone-field 앱을 사용하고 있습니다.Django에서 주어진 시간대를 사용하여 시간 표시
class Dive(models.Model):
...
date_time_in = models.DateTimeField(default=timezone.now)
timezone = TimeZoneField(default=timezone.get_current_timezone_name())
그래서 사용자가 날짜 문자열을 입력 할 수 있습니다 ("2016년 7월 11일 14시")와 시간대 ("아시아/방콕"- + 세계 협정시 07시)를 선택, 나는 그 시간대를 설정 데이터베이스는 다음 (SELECT 문 내 로컬 시간대에 있습니다) 데이터베이스에 UTC로 날짜를 저장
def log_dive(request):
if request.method == 'POST':
form = DiveForm(request.POST)
if form.is_valid():
dive = form.save(commit=False)
date = dive.date_time_in
date = date.replace(tzinfo=None)
dive.date_time_in = dive.timezone.localize(date)
dive.save()
: : 이제
# SELECT date_time_in, timezone FROM divelog_dive ORDER BY number DESC;
date_time_in | timezone
------------------------+------------------
2014-07-11 17:00:00+10 | Asia/Bangkok
같이 내보기에 주어진 일에 날짜의 내가 고생하고있는 두 가지가있다. iith :
1) 주어진 시간대로 날짜를 표시하고 싶지만 TIME_ZONE 설정을 기본값으로 중지 할 수 없습니다.
2) 사용자가 레코드를 편집하는 경우 편집 필드에 표시된 시간은 원래 입력 된 시간 (14:00)이어야하며 현재 시간대 (17:00)에 표시됩니다.
감사합니다, 지금 그것을 알아 냈어요, 내가 게시 된 코드는'(= 없음 tzinfo) 교체'후 날짜, 선을 저장하기위한 올바른 시간대를 사용자가 선택한 시간대로 설정합니다 (dive.timezone은 pytz 시간대 객체 임). – xeonman9000