2015-11-03 151 views
2

我想讓用戶輸入兩個日期,然後從form_valid()中計算他們的日子更容易。數據庫模型每天接受單獨的記錄。多個.save()在Django FormView

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()而不重寫它?

+0

你想要對第一次和最後一次計算的區別做什麼? – Programmingjoe

+0

我在表單中傳遞了其他一些信息,大部分時間都是一樣的。在極少數情況下,用戶稍後可以修改該功能,但只需單獨指定每一天即可省力。 – Dominik

回答

2

我想你不應該依賴form.save()並嘗試保存不同的記錄。您應該使用Model.objects.create()來創建新記錄。

+0

那麼form.save()比Model.objects.create()更有什麼優勢?我懷疑它是由於某種原因提供的。 – Dominik