Skip to main content
 首页 » 编程设计

python之django FormView 中的多个 .save()

2024年10月24日37me-sa

我试图让用户更容易地只输入两个日期,然后在 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() 来创建新记录。