django FormView 中的多个 .save()
Multiple .save() in 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() 而不会覆盖它?
我认为你不应该依赖 form.save()
并尝试保存不同的记录。您应该使用 Model.objects.create()
来创建新记录。
我正在尝试让用户更轻松地只输入两个日期,然后在 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() 而不会覆盖它?
我认为你不应该依赖 form.save()
并尝试保存不同的记录。您应该使用 Model.objects.create()
来创建新记录。