1
我存儲在我的數據庫中的對象,象這樣一個timefield:噹噹前時間處於兩個TimeField之間的Django過濾器值
class MyClass(models.Model):
start_time = models.TimeField(null=True, blank=True)
stop_time = models.TimeField(null=True, blank=True)
的想法在這裏是查詢一個端點時,服務器將返回唯一對象當前時間在start_time和stop_time之間。
注意:start_time和stop_time是一天中的任意時間,可以跨越午夜,但絕不會超過24小時。
我已經試過
currentTime = datetime.now().time()
MyClass.objects.filter(stop_time__gte=currentTime, start_time__lte=currentTime)
但這並不佔當次跨越午夜。
我確定必須有一個簡單的解決方案,但網絡搜索已經沒有結果。有沒有人知道這樣做的好方法?
只是澄清'MyClass.objects.filter(...)'不返回一個列表,它會返回一個QuerySet和你正在執行** OR **操作這些查詢集,它將返回一個新的查詢集。 [order_by()](https://docs.djangoproject.com/en/1.10/ref/models/querysets/#order-by)是Querysets的一種方法。 –
這確實是兩個相當困難的查詢。如果你看它,你有多個OR條件和聯合,所有這些都很難在Mysql或sqlite等低端數據庫上優化。但是不知道爲什麼你不能爲這些值設置一個日期,我不能改變我的回答 – e4c5
@ e4c5 - 我可能會理解這個錯誤,但我的理解是,通過使用特定的日期值,我限制自己的日子附加到那些時間,對嗎?我單獨使用時間值的原因是他們每天堅持不懈,我不想爲了保持系統正常運行而更新日期值。 更清楚了嗎? –