保存表单集可以保存一堆空白表单

2024-06-07 18:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个视图,可以使用addrow函数添加用户想要的任意多个表单,然后单击save。该页面显示现有表单并允许您添加新表单

当我保存第一个时,一切正常。然后,当我继续保存时,它会保存新记录和一些空白记录,这些记录的数量等于我们在页面上看到的表单的数量(现有的+您试图添加的数量)

我允许字段为空,因为我需要在视图中填充一些字段。如果没有这个,当我运行一个错误的提交来填充字段并保存时,我会得到验证错误

这是我的视图-两个视图,因为我不想重定向到另一个页面

def timesheet(request, timesheet_id):
    # do some stuff
    # This displays the existing records
    TimeInlineFormSet = inlineformset_factory(TimeSheet, Time, exclude=('timesheet_id',), extra=0, formset=CustomInlineFormSet)
    # This allows addition of new records
    NewTimeFormSet = modelformset_factory(Time, form=TimeForm, formset=RequiredFormSet)
    existing_formset = TimeInlineFormSet(instance=timesheet)
    newtime_formset = NewTimeFormSet()
    #render the timesheet

#and this is where I save
def create_time(request):
    #some stuff, get timesheet id 
    NewTimeFormSet = modelformset_factory(Time, form=TimeForm, formset=RequiredFormSet)
    if request.method == 'POST':
        newtime_formset = NewTimeFormSet(request.POST, request.FILES)
        if newtime_formset.is_valid():
            for orange in newtime_formset:
                    obj = orange.save(commit=False)
                    if obj.add_row == True:
                        obj.add_row = False
                        # set some fields
                        obj.save()
        else:
            print "new row not valid"
        return HttpResponseRedirect(reverse("tande:timesheet", kwargs={"timesheet_id": timesheet_object}))

addrow字段默认为True,我尝试这样做是为了避免保存现有记录,因为在保存时将其设置为False

谢谢


Tags: 视图idobj表单数量requestfactorysave

热门问题