如何将csv日期时间字符串保存到Django模型字段中[重复]
Posted
技术标签:
【中文标题】如何将csv日期时间字符串保存到Django模型字段中[重复]【英文标题】:How to save csv datetime string into Django model field [duplicate] 【发布时间】:2020-05-15 23:57:31 【问题描述】:我想将 DateTimeField 数据从 csv 存储到我的模型字段中,但出现错误
RuntimeWarning:DateTimeField Applications.submitted_at 收到一个 天真的日期时间(2020-01-30 11:08:20.429620),而时区支持是 积极的。运行时警告)
我的models.py
submitted_at = models.DateTimeField(default=datetime.now, blank=True)
form_fill_up_datetime = models.DateTimeField(auto_now=True, auto_now_add=True),
我该如何解决这个问题?
这是我将 csv 字符串数据转换为日期时间字段的函数
def date_check(data):#
if data is None:
print("Date Field is empty")
return
try:
try:
date_format1 = '%m/%d/%Y %H:%M:%S'
date_obj = datetime.datetime.strptime(data, date_format1)
return date_obj
except ValueError:
print('Incorrect data format, should be YYYY-MM-DD')
date_format2 = '%Y-%m-%d %H:%M:%S'
date_obj = datetime.datetime.strptime(data, date_format2)
return date_obj
except Exception as e:
print(e)
return
【问题讨论】:
顺便说一句,这不是错误,而是警告。 Django 有一个关于这个主题的优秀文档 -> docs.djangoproject.com/en/3.0/topics/i18n/timezones 【参考方案1】:您看到的不是错误,而是警告。它说你运行服务器时区感知很奇怪,然后你仍然传递一个没有时区的datetime
对象。您可以向 datetime
对象添加时区,例如 UTC:
from pytz import utc
def date_check(data):#
if data is None:
print("Date Field is empty")
return
try:
try:
date_format1 = '%m/%d/%Y %H:%M:%S'
date_obj = datetime.datetime.strptime(data, date_format1)
return utc.localize(date_obj)
except ValueError:
print('Incorrect data format, should be YYYY-MM-DD')
date_format2 = '%Y-%m-%d %H:%M:%S'
date_obj = datetime.datetime.strptime(data, date_format2)
return utc.localize(date_obj)
except Exception as e:
print(e)
return
【讨论】:
以上是关于如何将csv日期时间字符串保存到Django模型字段中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
valueerror: 生成 csv 文件并在 django 中保存到模型时对已关闭文件的 i/o 操作
如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv