因此,我有一个视图,可以使用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
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐