我有一个django模型之旅,我有一个start_date和end_date这样
class Journey(models.Model):
start_date = models.DateField(verbose_name=_('Start date'))
end_end = models.DateField(verbose_name=_('End date'))
并且有另一个对这个模型有foreignKey的模型 DAY_OF_WEEK =(('MO','Monday'), ('TU','星期二'), ('我们','星期三'), ('TH','星期四'), ('FR','星期五'), ('SA','星期六'), ('SU','星期天'),)
class Schedule(models.Model):
day = models.CharField(max_length=2, choices=DAY_OF_WEEK)
start_time = models.TimeField(null=True, blank=True, )
end_time = models.TimeField(null=True, blank=True, )
journey = models.ForeignKey(Journey)
我想要做的是我想要从start_date到end_date的所有日子进行迭代。如果日期属于Schedule模型中的日期,那么我想在字典中更新该日期以及模型的其他字段,以便我可以在模板上迭代它。为此,我尝试了这个
import datetime
from time import strftime
def get_schedule_days(self):
days=Schedule.objects.filter(journey=self).values('day')
days_list=[]
for day in days:
days_list.append(day['day'])
delta = datetime.timedelta(days=1)
schedule_dict={}
while d <= end_date:
if d.strftime("%A").upper()[:2] in days_list:
schedule_dict.update('date',d.strftime("%Y-%m-%d"))
print d.strftime("%Y-%m-%d")
d += delta
是di的正确方法,还是有更好的方法来迭代一系列日期,并找到计划安排的所有日子。
答案 0 :(得分:0)
重复计划是一个混乱的问题,因此我建议您不要尝试重新发明轮子以重复计划并使用RRULE:http://labix.org/python-dateutil#head-470fa22b2db72000d7abe698a5783a46b0731b57
要使用此功能,Journey不会包含日期。 Schedules模型将具有开始和结束的完整日期时间,然后是描述它们如何重复直到结束日期的RRULE。