跳周末的逻辑Django/python

Logic to jump weekends Django/python

我得到了这个功能。我需要的是根据日期对我的模型进行一些更改。正如我的 if 语句如下所示,如果 "ddate" 是今天或明天,请在我的 "pull_ins" 列中进行一些更改并将其设置为 "Ready to ship" 但如果是后天和后天, 设置 "Not yet"。这行得通,但我的问题是我需要跳过周末并保持 4 天的逻辑,有什么想法吗?

例如,如果今天是星期四,则从今天、明天(星期五)获取日期 ----- 跳周末 --- 星期一、星期二。

这是我得到的:

def Ship_status():   

    week = {0, 1, 2, 3, 4}
    deltaday = timedelta(days=1)
    today = datetime.now().date()
    day = today
    day1 = day + deltaday
    day2 = day1 + deltaday
    day3 = day2 + deltaday


    for i in Report.objects.all():
        if i.ddate.weekday() in week:
            if i.ddate == day:
                i.pull_ins = "Ready to ship"
                i.save()
            if i.date == day1:
                i.pull_ins = "Ready to ship"
                i.save()
            if i.date == day2:
                i.pull_ins = "Not yet"
                i.save()
            if i.date == day3:
                i.pull_ins = "not yet"
                i.save()

感谢您的宝贵时间。

dateutil.rrule 是您可以利用的库。获取下一个工作日:

from dateutil import rrule
next_weekday = rrule.rrule(rrule.DAILY, count=3, byweekday=(0, 1, 2, 3, 4), dtstart=dt))

因此,在您的查询中,您可以这样做:

def compute_shipping(dt=datetime.datetime.date(), count=2):
    next_weekdays = rrule.rrule(rrule.DAILY, count=count, byweekday=(0, 1, 2, 3, 4), dtstart=dt))
   return list(next_weekdays)

#Ready to ship
Report.objects.filter(ddate__in=compute_shipping()).update(pull_ins="Ready to ship")

#For Not yet
#Query would be similar - just set the appropriate start date