Python django模板中的循环日期时间范围
我有一个django模型的旅程,我有一个开始日期和结束日期,就像这样Python django模板中的循环日期时间范围,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有一个django模型的旅程,我有一个开始日期和结束日期,就像这样 class Journey(models.Model): start_date = models.DateField(verbose_name=_('Start date')) end_end = models.DateField(verbose_name=_('End date')) 还有另一个模型,它有这个模型的外键 一周中的第二天=((“MO”,“星期一”), (‘屠’、‘星期二’), (‘我们’、‘星
class Journey(models.Model):
start_date = models.DateField(verbose_name=_('Start date'))
end_end = models.DateField(verbose_name=_('End date'))
还有另一个模型,它有这个模型的外键
一周中的第二天=((“MO”,“星期一”),
(‘屠’、‘星期二’),
(‘我们’、‘星期三’),
(‘TH’、‘星期四’),
(‘FR’、‘Friday’),
(‘SA’、‘星期六’),
(‘SU’、‘Sunday’),)
我想做的是,我想迭代从开始日期到结束日期的所有日子。如果日期属于计划模型中的某一天,那么我想在字典中更新该日期以及模型的其他字段,以便在模板上迭代该日期。为了这个,我试过这个
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
导入日期时间
从时间导入strftime
def获取计划天数(自我):
天=计划.对象.过滤器(旅程=自我).值('天')
天数列表=[]
对于以天为单位的天:
天列表。附加(天['day'])
delta=datetime.timedelta(天数=1)
附表_dict={}
虽然重复计划是一个混乱的问题,所以我建议您不要试图重新发明重复计划的轮子,而使用RRULE:
若要使用此选项,旅程将不包括日期。计划模型将有完整的开始和结束日期时间,然后是一个RRULE,描述它们如何重复到结束日期
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