Python Django Admin为DateTime输入时区,并在其中显示
我将让用户将事件输入我们的管理员(Django 1.4)。如果他们能够输入日期/时间并选择发生和显示的时区,这将是最直观的 也就是说,我希望他们能够以某种方式指定“此事件将在11月2日美国东部时间下午4:00发生”,并确保它显示在该时区 管理员似乎还没有任何处理时区条目或为datetime字段指定时区的能力,因此我不太确定如何做到这一点。Django在1.4中为模型datetime对象添加了 但是,我还没有使用它,我不确定它是否允许在管理员中或在创建ModelForm时自动设置时区 了解正在发生的事情很重要,一旦掌握了正在做的事情,使用django的时区支持可能会更好 忽略内部django支持,我会用以下方式解决这个问题:Python Django Admin为DateTime输入时区,并在其中显示,python,django,Python,Django,我将让用户将事件输入我们的管理员(Django 1.4)。如果他们能够输入日期/时间并选择发生和显示的时区,这将是最直观的 也就是说,我希望他们能够以某种方式指定“此事件将在11月2日美国东部时间下午4:00发生”,并确保它显示在该时区 管理员似乎还没有任何处理时区条目或为datetime字段指定时区的能力,因此我不太确定如何做到这一点。Django在1.4中为模型datetime对象添加了 但是,我还没有使用它,我不确定它是否允许在管理员中或在创建ModelForm时自动设置时区 了解正在发生
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中处理时区时,您将需要。您始终可以创建一个单独的“时区”字段。我知道这一点,但如何将其应用于datetime字段,以便正确保存(以便针对该时区进行调整)。然后,当在管理员中重新显示datetime进行编辑时,我如何使它显示正确的时间(因为它现在将根据您输入的时区进行调整,而不是根据settings.py中的时区进行调整,这就是那些显示的时区。)