Sta*_*ute 10 python django django-models
DateTimeField当使用auto_now_add这种方式在 Django 中保存时间戳时:
creation_timestamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
该字段以毫秒为单位保存:
2018-11-20T15:58:44.767594-06:00
Run Code Online (Sandbox Code Playgroud)
我想将其格式化为无毫秒显示:
2018-11-20T15:58:44-06:00
Run Code Online (Sandbox Code Playgroud)
但我能想到的唯一选择并不能完全显示我所需要的:
format="%Y.%m.%dT%H:%M:%S%z"给我2018.11.20T15:58:44-0600
如何按照我需要的方式格式化该字段?
或者,我宁愿DateTimeField完全不保存任何毫秒,但auto_now_add允许做这种事情吗?
小智 9
如果你想在显示时格式化它,你可以使用:creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")
您还可以将DateTimeField其保存为该格式,但这将要求进行一组将应用于系统范围的更改:
在您的设置文件中设置以下内容:
DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"L10N=False在日期格式方面,制作痛苦的本地化数据并不具有先例。USE_TZ=False但是,请考虑以下事实:默认情况下,此更改将应用于项目中的所有日期时间对象。
您可以重写DateTimeField的value_to_string方法并在其中添加更改。例如:
class CustomDateTimeField(models.DateTimeField):
def value_to_string(self, obj):
val = self.value_from_object(obj)
if val:
val.replace(microsecond=0)
return val.isoformat()
return ''
Run Code Online (Sandbox Code Playgroud)
并在模型中使用它:
created = CustomDateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)