2017-03-09 2 views
3

document에 따르면이 필터는 v1.9에 추가되었으므로 날짜없이 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

미안하지만, 나는 올바르게 테스트하지 않았다. 내 경우 엔 효과가있어. 어쩌면 당신은 오늘 '우유 저장고'를 만들지 않았을 것입니다. 그것은 제가 한 실수입니다. – 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

특정 요구 사항에 따라 이상적인 솔루션 일 수도 있고 그렇지 않을 수도 있습니다. USE_TZ = False를 settings.py에 설정하면 __date가 작동하는 것으로 나타났습니다.

USE_TZ를 사용 중지 할 때까지 동일한 문제 (__month 또는 __day별로 필터링 할 수 없었습니다)가있었습니다. 다시 말하지만, 귀하의 경우에는 이상적이지는 않지만 __date가 다시 작동해야합니다.

관련 문제