我有一个单独的Datefield和Timefield的事件的Django模型。有没有办法将它转换为Python日期时间对象,以便我可以以某种精度查询即将发生的事件?目前我只能得到第二天的即将到来的。Django datefield和时间字段python日期时间
models.py
event_time = models.TimeField()
event_date = models.DateField()
基本上,可予以分钟过滤,或者甚至裂开第二precition?
谢谢。
我有一个单独的Datefield和Timefield的事件的Django模型。有没有办法将它转换为Python日期时间对象,以便我可以以某种精度查询即将发生的事件?目前我只能得到第二天的即将到来的。Django datefield和时间字段python日期时间
models.py
event_time = models.TimeField()
event_date = models.DateField()
基本上,可予以分钟过滤,或者甚至裂开第二precition?
谢谢。
改为使用DateTimeField
(文档中参见this section)。转换为datetime.datetime
由Django自动处理。
A DateField
导致datetime.date
和datetime.time
对象。您可以使用replace
将这些值合并到一个更新的date
:
>>> today = datetime.datetime.today() >>> today datetime.datetime(2012, 3, 31, 11, 6, 5, 182371) >>> time = datetime.time(11, 30) >>> today.replace(hour=time.hour, minute=time.minute) datetime.datetime(2012, 3, 31, 11, 30, 5, 182371)
注意,最终date
有11.30随着时间的现在。还要注意today
没有修改,它只是计算一个新的日期和时间。正如你所看到的,你现在必须自己进行合并,因为两个值都存储在不同的字段中。这就是为什么一个DateTimeField
是一个更好的选择,如果你有能力修改模型的领域。
你应该像合并日期时间字段一样添加新字段。更好的表现。
event_full_datetime = models.DateTimeField()
修复旧数据库。对于像这样的脚本的shell。
for obj in YourModel.objects.all():
obj.event_full_datetime = datetime.datetime(obj.event_date.year,obj.event_date.month, obj.event_date.day, obj.event_time.hour, obj.event_time.minut, obj.event_time.second)
obj.save()
不知道为什么,这是downvoted:/ – 2012-03-31 09:31:40
我有被downvoted没有问题,但我肯定没有“没有显示出研究工作”,我不会被张贴到SO。问题是我想避免改变数据库模型,至少现在,我不知道如何查询这两个字段。我可以定义,事件类中,是这样的: 高清ev_datetime(个体经营): 回报datetime.datetime.combine(self.event_date,self.start) 后来我做不到查询.filter(event__ev_datetime__gt = NOW)。这基本上是我的问题。 – freethrow 2012-03-31 20:40:44