ホームページ  >  記事  >  バックエンド開発  >  Django クエリ オブジェクトを日付範囲でフィルタリングする方法

Django クエリ オブジェクトを日付範囲でフィルタリングする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 00:27:03281ブラウズ

How to Filter Django Query Objects by Date Range?

日付範囲による Django クエリ オブジェクトのフィルタリング

Django モデルを使用する場合、日付範囲によるクエリ オブジェクトのフィルタリングは一般的なタスクです。これを実現するには、Django の組み込みの日付範囲機能を利用できます。

質問で述べたモデルと同様のモデルを考えてみましょう。

<code class="python">class Sample(models.Model):
    date = fields.DateField(auto_now=False)</code>

次のようなオブジェクトをフィルタリングする必要があるとします。 2011 年 1 月 1 日から 2011 年 1 月 31 日までの日付など、特定の日付範囲内にあるものを指定します。その方法は次のとおりです。

<code class="python">Sample.objects.filter(date__range=["2011-01-01", "2011-01-31"])</code>

このクエリは __range ルックアップを使用して日付を指定します。サンプル オブジェクトの日付フィールドが該当する範囲。

または、月ごとにオブジェクトをフィルタリングする場合は、次の構文を使用できます。

<code class="python">Sample.objects.filter(date__year='2011', date__month='01')</code>

このクエリはすべてをフィルタリングします。

範囲終了を除く

上記のクエリには範囲終了 (つまり、2011 年 1 月 1 日と 1 月 31 日) が含まれることに注意してください。最初の例)。これらの範囲の端を除外する必要がある場合は、回答の編集で Bernhard Vallant によって提案されているように、__gt (大なり) および __lt (小なり) ルックアップを使用できます:

<code class="python">Sample.objects.filter(date__gt="2011-01-01", date__lt="2011-01-31")</code>

このクエリはフィルターします日付が 2011 年 1 月 1 日よりも大きく、2011 年 1 月 31 日よりも小さいすべてのオブジェクト。実質的に範囲終了は除外されます。

以上がDjango クエリ オブジェクトを日付範囲でフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。