Filtrer les objets de requête Django par plage de dates
Lorsque vous travaillez avec des modèles Django, filtrer les objets de requête par plage de dates est une tâche courante. Pour y parvenir, vous pouvez utiliser la fonctionnalité de plage de dates intégrée de Django.
Considérons un modèle similaire à celui mentionné dans la question :
<code class="python">class Sample(models.Model): date = fields.DateField(auto_now=False)</code>
Supposons que vous ayez besoin de filtrer des objets qui se situent dans une plage de dates spécifique, comme celles dont les dates sont comprises entre le 1er janvier 2011 et le 31 janvier 2011. Voici comment procéder :
<code class="python">Sample.objects.filter(date__range=["2011-01-01", "2011-01-31"])</code>
Cette requête utilise la recherche __range pour spécifier la date plage dans laquelle le champ de date des objets Sample doit se situer.
Alternativement, si vous souhaitez filtrer les objets par mois, vous pouvez utiliser la syntaxe suivante :
<code class="python">Sample.objects.filter(date__year='2011', date__month='01')</code>
Cette requête filtre tous objets avec des dates en janvier 2011.
Excluant les fins de plage
Notez que les requêtes ci-dessus incluent les fins de plage (c'est-à-dire le 1er janvier et le 31 janvier 2011, dans le premier exemple). Si vous devez exclure ces extrémités de plage, vous pouvez utiliser les recherches __gt (supérieur à) et __lt (inférieur à), comme suggéré par Bernhard Vallant dans la modification de la réponse :
<code class="python">Sample.objects.filter(date__gt="2011-01-01", date__lt="2011-01-31")</code>
Cette requête filtre tous les objets dont les dates sont supérieures au 1er janvier 2011 et inférieures au 31 janvier 2011, excluant effectivement les fins de plage.
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!