Djangoは、1.4 でモデル datetime オブジェクトのタイムゾーン サポートを追加しました。
ただし、私はそれを使用していないため、管理者または ModelForm の作成時にタイムゾーンを自動的に設定できるかどうかはわかりません。
何が起こっているのかを理解することは重要です。何が行われているのかを理解したら、django のタイムゾーン サポートを使用する方がよいかもしれません。
内部の django サポートを無視して、次のような方法で問題を攻撃します。
from pytz import all_timezones, timezone
TIMEZONES = zip(all_timezones, all_timezones)
class EventModel(models.Model):
dt = models.DateTimeField() # user entry
tz = models.CharField(max_length=150,
choices=TIMEZONES) # user entry
def get_dt_in_user_timezone(self, user_profile):
event_tz = timezone(self.tz)
event_dt = event_tz.localize(self.dt) # assign timezone to datetime
# convert registered datetime to utc
# --> This can probably be bypassed
utc_dt = event_dt.astimezone(pytz.utc)
# convert to user's time defined in profile
user_tz = timezone(user_profile.tz)
return utc_dt.astimezone(user_tz)
Python でタイムゾーンを扱う場合、pytzが必要になります。