Django新手在这里。我正在为一个带有字符串时间戳的SQLite数据库制作一个Django模型,例如: 2014-09-23T18:43:26.692Z 。因为我想最终使用Django的过滤引擎进行查询(而不是使用 strftime ),我希望我的模型从ISO字符串生成DateTimeField对象。如果我尝试在原始数据库字段上声明DateTimeField,就像这样
startTime = models.DateTimeField(db_column='startTime')
我收到错误:' unicode'对象没有属性' isoformat'
我做了一些挖掘并尝试了以下代码:
startTime = models.DateTimeField(dateutil.parser.parse(models.TextField(db_column='startTime'))
但现在错误是 AttributeError:' TextField'对象没有属性'读' 。 我究竟做错了什么?这甚至是正确的方法吗?
答案 0 :(得分:15)
由于没有人愿意回答这个问题并且它出现在谷歌搜索的顶部,这里可以节省一些额外的搜索。正如有人提到Django自己的日期分析模块最适合这项工作,将ISO8601和许多其他格式转换为Python的datetime.datetime对象。它也是时区,因此是Django项目的理想选择。
from django.utils import dateparse
x = '2014-09-23T18:43:26.692Z'
y = dateparse.parse_datetime(x)
print y
瞧瞧..!
2014-09-23 18:43:26.692000+00:00
答案 1 :(得分:0)
在Django 1.11中,我们可以将一个ISO格式字符串分配给DateTimeField。如下图所示。
Lesson.objects.create(starttime='2017-04-20T12:01:00.000Z',
endtime ='2017-04-20T13:01:00.000Z')