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