django FormView中的多个.save()

时间:2015-11-03 16:39:38

标签: python django formview

我试图让用户更容易输入两个日期,然后在form_valid()中计算他们的天数。数据库模型接受每一天作为单独的记录。

def form_valid(self, form):

    time = form.cleaned_data['begin_time']
    end_time = form.cleaned_data['end_time']
    is_first_day = True

    while time + timedelta(hours=24) < end_time:
        data = form.save(commit=False)
        data.begin_time = time
        data.end_time = time + timedelta(hours=24)
        data.is_first_day = is_first_day
        data.save()
        is_first_day = False
        time = time + timedelta(hours=24)

    data = form.save(commit=False)
    data.settlement = settlement
    data.begin_time = time
    data.end_time = end_time
    data.is_first_day = is_first_day
    data.save()

    return super(FormView, self).form_valid(form)

不幸的是,只保存了最后一天。有没有机会我可以在FormView中多次执行data.save()而不会覆盖它?

1 个答案:

答案 0 :(得分:2)

我认为您不应该依赖form.save()并尝试保存不同的记录。您应该使用Model.objects.create()创建新记录。