2017-03-09 35 views
3

根據在v1.9上添加的這個document,我們可以按時間查詢DateTimeField,而無需時間。過濾django DatetimeField__date不起作用

的例子是:

Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1)) 
Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1)) 

但它不是爲我工作:

class MilkStorage(models.Model): 
    .... 

    created_at = models.DateTimeField(null=False) 

使用

from datetime import date 
MilkStorage.objects.filter(created_at__date=date.today()) 

它返回一個空查詢集<QuerySet []>

此查詢只適用於PostgreSQL嗎?即時通訊使用MySQL

+0

你是對的,它也不適用於我的應用程序,也沒有@ mohammed-shareef-c的建議。 – albar

+0

是的,我認爲我需要在github上提出這個問題 –

+0

對不起,我沒有正確測試。它適用於我的情況。也許你今天沒有創建任何'MilkStorage',那是我犯的錯誤。 – albar

回答

0

我有一個訪客模型。在這個模型中,我通過日期而不是時間過濾數據,並且它正在工作。

models.py

Visitor(models.Model): 
    timestamp = models.DateTimeField(_('Login Date Time'), auto_now=True) 
    os_info = models.CharField(_('OS Information'), max_length=30, null=True) 

views.py

import datetime  
visitor = Visitor.objects.filter(timestamp__lte=datetime.datetime.now().date()) 
print visitor 

輸出:

<Visitor: Windows 10>, <Visitor: Windows 10>] 

使用上述方式從日期過濾數據。

+0

,但你可以過濾它而不用'__lte'? –

+0

如果沒有'__lte',則必須附加'__date'來完成匹配。 – albar

+0

@albar是的,但不會在我的應用程序使用MySQL工作 –

0

根據您的具體要求,這可能是也可能不是理想的解決方案。我發現__date如果設置USE_TZ = False settings.py

我有這個相同的問題(我甚至無法通過__month或__day過濾),直到我禁用USE_TZ。再一次,可能不適合你的情況,但它應該讓__date再次工作。