这是我的第一个Django项目,结果有点变得非常困难。我正在使用formset制作行程生成器。这些可以重复(我已经知道至少如何通过编制管理表格来完成它)。对于每个活动(有人旅行),我已经传递了有关开始日期和结束日期的信息,该信息显示在以下表格上:日期1 [表格1] [表格2],日期2 [表格3] [表格4] 。我的问题是,最后,当我把它放回到视图中时,我想使用json.dumps
将它变成一个数组,并认为代码更具可读性和可用性。像这样:
{
"28-June-2017":
[
{"time": "8:00", "Breakfast": "b", "responsible": "Person1"},
{"time": "18:00", "activity": "Dinner", "responsible": "Person1"}
],
"29-June-2017":
[
{"time": "8:00", "activity": "Breakfast", "responsible": "Person2"},
{"time": "12:00", "activity": "Lunch", "responsible": "Person"}
]
}
现在,到目前为止,我已经解决了所有问题。我曾想过将变量传递给模板并生成一个输入,其中可以为每个formset添加日期(从而为每个输入重复数据),然后在视图上执行某些操作,以便按照我的意愿组织json文件。有没有办法让它发挥作用?这是我第一次使用python工作,所以如果它看起来很草率我很抱歉:
Views.py:
def itinerary(request, id):
t=get_object_or_404(Team, id = id)
days = []
d1 = t.arrival_date
d2 = t.departure_date
delta = d2-d1
for day in range(delta.days+1):
days.append(d1 + datetime.timedelta(days=day))
ItineraryFormSet = formset_factory(ItineraryForm, extra=len(days))
formset = ItineraryFormSet(request.POST or None)
formset_and_days = zip(formset, days)
if formset.is_valid():
clean = formset.cleaned_data
t.itinerary = json.dumps(clean)
t.save(update_fields=['itinerary'])
return HttpResponseRedirect(reverse ('single', args=[id]))
return render(request, 'itinerary.html', {'formset': ItineraryFormSet(),
'formset_and_days': formset_and_days,
'team':t, 'days': days})
我发现的最接近的是:
data = {single_day.strftime("%d-%B-%Y"): formset.cleaned_data for single_day in (d1+datetime.timedelta(n) for n in range(delta.days+1))}
但是,它不适用于我的目的。