【问题标题】:Multiple .save() in django FormViewdjango FormView中的多个.save()
【发布时间】:2015-11-03 16:39:37
【问题描述】:

我试图让用户更轻松地只输入两个日期,然后在 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() 而不会覆盖它?

【问题讨论】:

  • 你想用你计算的第一次和最后一次之间的差异来做什么?
  • 我在表单中传递了一些其他信息,在整个期间大部分都是相同的。在极少数情况下,用户可以稍后对其进行修改,但与单独指定每一天相比,工作量要少得多。

标签: python django formview


【解决方案1】:

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

【讨论】:

  • 那么 form.save() 比 Model.objects.create() 有什么优势呢?我怀疑它是出于某种原因提供的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2013-09-17
  • 2016-07-30
  • 1970-01-01
  • 2015-01-15
  • 2023-03-13
相关资源
最近更新 更多