跳转Django/python的逻辑

2024-05-13 21:42:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了这个函数。我需要的是根据不同的日期对我的模型做一些修改。如我下面的if语句所示,如果“ddate”是今天或明天,请在我的“pull\ in”列中进行一些更改,并将其设置为“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()

谢谢你的时间。你知道吗


Tags: toindateifsavepullyetready
1条回答
网友
1楼 · 发布于 2024-05-13 21:42:25

^{}是您可以利用的库。要获得下一个工作日:

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

相关问题 更多 >