2016-09-27 2 views
1

毎日土曜日と日曜日に自動的にジャンプする必要がありますので、モデルから特定の要素の数をカウントできます。これは私が作成する必要があるテーブルの例である:ジャンプ週末機能? Django/python

Date ------- Order Holds 

Today ------ 45 (wednesday) 

09/09/16 --- 34 (Thursday) 

10/09/16 --- 23 (Friday) 

-----JUMP WEEKEND --- (and keep count in) 

13/09/16 --- 56 (Monday) 

14/09/16 --- 14 (Tuesday) 

これは私が今日のために保持している、と私は1日を追加して、それらを得続けることができますの数をカウントするフィルタリング方法である:

これがされ私のモデル(models.py):あなたが見ることができるように

class Data(models.Model): 
    date = models.DateField(null=True, blank=True) 
    ban = models.CharField(max_length=10) 

これは私のロジックの一部(views.py)

today = datetime.today() 
tomorrow = today + timedelta(days=1) 
orders = Data.objects.filter(date=today) 
ban = orders.filter(ban__contains="BAN").count() 

です私のviews.pyロジックでは、今日の日付からすべてのBANのステータスをフィルタリングできます。私の問題は、私が明日のためにフィルタリングし、明日が金曜日であるならば、私は土曜日と日曜日に飛ぶ必要があるということです。言い換えれば、毎週土曜日にジャンプするだけで、そのロジックを適用します。

+0

のみ示されているコードは、今日 '、一日のために働くので、あなたがその価値を持ったら、あなたが興味のある日のその1は、かどうかを確認するためにそれをテストすることができます'、私はあなたが示していないより多くのコードがあると仮定します。すべてのコードを表示せず、どのように失敗しているのかを明確に説明していれば、私たちはお手伝いできません。 – CAB

+0

あなたはあなたが使っていることを言っていませんでした.Django ORMのように見えますが、Djangoか一般的なPythonの質問か分かりません。 – polku

+0

申し訳ありませんが、はい私はdjangoを使用しています。私はより明確にしようとしているモードの詳細をアップロードさせてください。 – Deluq

答えて

1

あなたはのための平日の番号を見つけることができます:それはここではより多くを参照してください。6.あなたがdate.weekday() >= 5

で日をスキップしたいと0として月曜日と日曜日で、整数のように曜日を返します。そのweekday()メソッドを呼び出すことによって。datetime

from datetime import datetime, timedelta 

DAYS_OF_INTEREST = {0, 1, 2, 3, 4} # Monday-Friday 
DELTA_ONE_DAY = timedelta(days=1) 
today = datetime.today() 

day = today 
for _ in range(14): # next two weeks 
    if day.weekday() in DAYS_OF_INTEREST: 
     print(day.strftime(("%d/%m/%y --- %A"))) 
     #orders = Report.objects.filter(current_fcd_date=day) 
     #hold = orders.filter(order_hold__contains="HOLD").count() 
    day += DELTA_ONE_DAY 

出力:

27/09/16 --- Tuesday 
28/09/16 --- Wednesday 
29/09/16 --- Thursday 
30/09/16 --- Friday 
03/10/16 --- Monday 
04/10/16 --- Tuesday 
05/10/16 --- Wednesday 
06/10/16 --- Thursday 
07/10/16 --- Friday 
10/10/16 --- Monday 
+0

Martin、ロック! – Deluq

+0

同じ論理を適用し、重複を無視するとどうでしょうか? – Deluq

+0

チェックされた日付の範囲が連続して7日間を超えている場合にのみ、重複があります。 – martineau

関連する問題