跳转周末功能? Django/python

Jump weekends function? Django/python

我需要每天自动跳到星期六和星期日,这样我就可以计算模型中的某些元素。这是我需要创建的 table 的示例:

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 状态,之后我可以用现在的问题来计算它们。我的问题是,如果我过滤明天而明天是星期五,我需要在星期六和星期日跳转。换句话说,只需跳过周末就可以每天应用该逻辑。

查看 date.weekday() 函数。它是Python中datedatetime类的一个实例方法。它 returns 一周中的第几天作为整数,星期一为 0,星期日为 6。所以你想用 date.weekday() >= 5

跳过几天

在此处查看更多信息:https://docs.python.org/2/library/datetime.html

您可以通过调用 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