Django/Python - 今週の日付をチェックする

私はこのようなことをしたいと思います:

entries = Entry.objects.filter(created_at__in = current_week())

良いパフォーマンスのためにそれを作る方法。ありがとう!

編集:私はまだ current_week()関数については考えていません。

9
アプリケーションの current_week を定義します。 「現在の」週の最初の日を定義するために必要なコード行を記述してください。次の週の最初の日は、その定義を考えると簡単になります。 (一部の人々は、週が日曜日か月曜日か、1月1日からどのようにオフセットされるかについて議論しています)。今週を定義するコードを提供してください。
追加された 著者 S.Lott,
"current_week()関数についてはまだ分かりませんが、" current week "を定義できない場合、プログラムを書くことはできません。現在の週の定義はコードで書き留めてください。テストケースを書くことはできず、コードが動作することを証明することはできません。ユーザーまたはスーパーバイザーまたは製品所有者から今週の定義を取得できない場合は、このコードを使用することはできません。定義。
追加された 著者 S.Lott,

3 答え

__ range を使用します。実際に週の始まりと終わりを最初に計算する必要があります:

import datetime
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday())
end_week = start_week + datetime.timedelta(7)
entries = Entry.objects.filter(created_at__range=[start_week, end_week])
19
追加された
S.Lottが指摘するように、「週」の解釈はさまざまです。 @ DanielRosemanの答えは、月曜日から始まるPythonデフォルトの週を想定しています。
追加された 著者 Chris Pratt,
あなたはtimedeltaのために7の代わりに6を使用しませんか?月曜日= 0、日曜日= 6
追加された 著者 denvaar,

うん、この質問は2年前です。今日はより多くの経験を積んで、 arrow を使用して日付の処理時間を短縮することをお勧めします。

Checkout: http://crsmithdev.com/arrow/

1
追加された

django 1.11以降、次のことができます:

Entry.objects.filter(created_at__week=current_week)

ISO-8601によれば、月曜日から日曜日までの週を提供します。

現在の週を照会するには:

from datetime import date
current_week = date.today().isocalendar()[1] 

isocalendar()は3タプルを返します:(ISO年、ISO週番号、ISO平日)。

1
追加された