从django formset传递到

时间:2017-07-06 21:12:11

标签: json django

这是我的第一个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))}

但是,它不适用于我的目的。

0 个答案:

没有答案