如何将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 操作

Django将字符串保存到日期字段

如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv

如何将csv文件输入Django [关闭]

Django + Postgres:将 JSON 字符串作为 JSON 类型直接保存到模型中

在django admin中使用完整日历;将外部拖动的项目保存到模型