【发布时间】:2014-11-28 16:14:47
【问题描述】:
当字段标记为auto_now_add属性时,Django如何编写日期字段?
是datetime.now().date() 还是timezone.now().date()?
换句话说,它使用哪个时区来获取当前日期?
【问题讨论】:
标签: python django django-models timezone
当字段标记为auto_now_add属性时,Django如何编写日期字段?
是datetime.now().date() 还是timezone.now().date()?
换句话说,它使用哪个时区来获取当前日期?
【问题讨论】:
标签: python django django-models timezone
看起来它使用datetime.date.today(),这将是系统的本地日期:
class DateField(Field):
...
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = datetime.date.today()
setattr(model_instance, self.attname, value)
return value
如果您想要不同的行为,您可以删除 auto_now_add=True,然后将模型的 pre_save 信号连接到接收器,将您的字段设置为您选择的日期。
或者,您可以覆盖模型的 save 方法并在那里设置字段。
【讨论】:
Django 默认使用你的 settings.py TIME_ZONE 属性中提到的时区。
默认设置为:
TIME_ZONE = 'UTC'
有关其用法的更多详细信息,请参见此处:
https://docs.djangoproject.com/en/1.7/topics/i18n/timezones/
【讨论】: