Django datefield和timefield到python datetime [英] Django datefield and timefield to python datetime
问题描述
models.py
event_time = models.TimeField()
event_date = models.DateField()
基本上,我可以用一分钟过滤,甚至分割第二个准则?
谢谢。
使用 DateTimeField
(请参阅本节)。转换为 datetime.datetime
由Django自动处理。
A DateField
导致一个 datetime.date
和一个 datetime.time
对象。您可以使用替换
将这些值合并到更新的日期
中:
>>> today = datetime.datetime.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)
请注意,生成的 code>现在有11.30。还要注意,
今天
不被修改,它只是计算一个新的日期和时间。如您所见,您现在必须自己合并,因为这两个值都存储在单独的字段中。这就是为什么一个 DateTimeField
是一个更好的选择,如果你有能力修改模型的字段。
I have a Django model with separate Datefield and Timefield for an event. Is there a way to convert it to a python datetime object so I can query for the upcoming events with some precision? Currently I get only the upcoming of the following day.
models.py
event_time = models.TimeField()
event_date = models.DateField()
Basically, can I filter with a minute, or even split second precition?
Thank you.
Use a DateTimeField
instead (see this section in the docs). Conversion to a datetime.datetime
is handled for you by Django automatically.
A DateField
results in a datetime.date
and a datetime.time
object. You can use replace
to merge these values into an updated 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)
Note that the resulting date
has 11.30 as time now. Note also that today
is not modified, it simply computes a new date and time. As you can see, you now have to do the merging yourself because both values are stored in separate fields. That's why a DateTimeField
is a much better choice, if you have the ability to modify the model's fields.
这篇关于Django datefield和timefield到python datetime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!