2016-09-27 92 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

由於只顯示代碼工作了一天,今天' ',我假設你有更多的代碼沒有顯示。如果你沒有顯示所有的代碼,我們無法幫助你,並清楚地解釋它是如何使你失敗的。 – CAB

+0

你沒有說你在用什麼,它看起來像Django ORM,但我們甚至不知道它是Django還是一般的Python問題。 – polku

+0

對不起,我正在使用django。讓我上傳更多的模式,我會盡量做得更清楚。 – Deluq

回答

1

你可以找到一個工作日數datetime通過調用其weekday()方法。一旦你的價值,你可以測試它,看看它的你感興趣的一個日子:

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

馬丁,你搖滾! – Deluq

+0

在計數時應用相同的邏輯和忽略重複項是什麼? – Deluq

+0

如果檢查的日期範圍連續超過7天,則只會有重複項。 – martineau

0

看看date.weekday()函數。它是Python中的datedatetime類的實例方法。它返回一週中的一天,在整數,週一爲0和週日爲6。所以,你會想跳過天date.weekday() >= 5

查看更多在這裏:https://docs.python.org/2/library/datetime.html