web-dev-qa-db-fra.com

filtre Django par date et heure sur une plage de dates

J'ai un modèle avec le champ "created_at", et j'ai une liste de dates. Je souhaite donc obtenir tous les modèles créés dans la plage de dates. Comment ?

Je sais que nous pouvons comparer date-heure et date facilement en utilisant:

queryset.filter(created_at__startswith=date)

Mais j'ai une plage de dates, alors comment?
Faites-le moi savoir pour plus d'informations.

9
user2139745

Vous pouvez utiliser range lookup. Trouvez simplement la date la plus basse et la plus grande, puis appliquez-la comme suit:

queryset.filter(created_at__range=(start_date, end_date))
16
Aamir Adnan

Vous pouvez utiliser range p. Ex.

first_date = datetime.date(2005, 1, 1)
last_date = datetime.date(2005, 3, 31)
queryset.filter(created_at__range=(first_date, last_date))
9
JamesO

Vous pouvez utiliser __gte (supérieur ou égal) et __lte (inférieur ou égal). Par exemple:

queryset.filter(created_at__gte=datetime.date.today())
9
Simeon Visser

Vous pouvez combiner date et plage recherches sur le terrain:

queryset.filter(created_at__date__range=(start_date, end_date))
0
Ali Shamakhi