Filtrer les objets de requête par plage de dates dans Django
Lorsque vous travaillez avec des modèles Django contenant des champs de date, il devient souvent nécessaire de filtrer les objets en fonction sur une plage de dates spécifiée. Cela vous permet de récupérer uniquement les objets qui se situent dans une période de temps spécifique.
Problème :
Considérez le modèle suivant avec un champ de date :
<code class="python">class Sample(models.Model): date = fields.DateField(auto_now=False)</code>
Comment filtrer les objets de ce modèle pour inclure uniquement ceux dont les dates sont comprises entre le 1er janvier 2011 et 31 janvier 2011 ?
Solution :
Pour filtrer les objets par plage de dates, utilisez le filtre de plage en combinaison avec le champ que vous souhaitez filtrer :
<code class="python">Sample.objects.filter(date__range=["2011-01-01", "2011-01-31"])</code>
Alternative pour le filtrage mensuel :
Si il vous suffit de filtrer les objets en fonction du mois, vous pouvez utiliser la syntaxe suivante :
<code class="python">Sample.objects.filter(date__year='2011', date__month='01')</code>
Exclure les fins de plage :
Si vous souhaitez exclure le spécifié aux extrémités de la plage, pensez à utiliser les filtres gt (supérieur à) et lt (inférieur à) comme suggéré par Bernhard Vallant dans l'édition :
<code class="python">Sample.objects.filter(date__gt="2011-01-01", date__lt="2011-01-31")</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!