我有一個單獨的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