を含むモデルがありますdatefield
。現在の週を含むそのモデルのクエリ セットを取得しようとしています (月曜日に開始)。
したがって、Djangodatefield
には単純なdatetime.date
モデルが含まれているため、 を使用してフィルタリングすると仮定しました.isocalendar()
。論理的には、現在の曜日による追加の比較や計算を行わなくても、まさに私が望むものです。
したがって、私が本質的にやりたいことは.filter
、このロジックで動作するステートメントを強制することです。
if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2]
...
しかし、フィルターステートメント内にそれを記述する方法は?
.filter(model__date__isocalendar=datetime.date.today().isocalendar())
間違った結果が得られます (今週ではなく今日と比較するのと同じです)。
真のhttp://docs.python.org/library/datetime.htmlを掘り下げているので、他の平日のオプションに気づいていません...
ドキュメントからのメモ:
date.isocalendar() 3 つのタプル (ISO 年、ISO 週番号、ISO 曜日) を返します。
アップデート:
範囲を使用するソリューションは嫌いでしたが、これが最良の選択肢です。ただし、私の場合、週の始まりを示す変数を作成し、現在の週の一致を探している場合は、それ以上の値または等しい値に見えるようにしました。週数を指定する場合 両端が必要になります。
today = datetime.date.today()
monday = today - datetime.timedelta(days=today.weekday())
... \
.filter(date__gte=monday)