我在一个模板中有 3 个表单集。在给定时间只有一个可见(另外两个完全隐藏):
<form style="display: none;">
所有 3 个表单都使用默认值呈现,即使没有输入数据也应该是有效的。
但是,我想知道在验证views.py 时提交的是哪个。
在 views.py 我有以下内容:
def submitted(request):
f1 = formset1(request.POST)
f2 = formset2(request.POST)
f3 = formset3(request.POST)
if f1.is_valid() or f2.is_valid() or f3.is_valid():
f1.save()
f2.save()
f3.save()
# Do a lot of calculations...
return render(request, 'submitted.html')
问题是,如果只提交了 f1(每个表单集都有自己的提交按钮),我不希望保存 f2 或 f3。 '#Do很多计算...'部分非常广泛,我不想不必要地复制代码。
如何使用相同的 View ,但只保存和计算提交的表单集?
最佳答案
如果每个表单都有自己的提交按钮:
<form id='form1'>
...
<input type='submit' name='submit-form1' value='Form 1' />
</form>
<form id='form2'>
...
<input type='submit' name='submit-form2' value='Form 2' />
</form>
<form id='form3'>
...
<input type='submit' name='submit-form3' value='Form 3' />
</form>
然后提交按钮的名称将在
request.POST
无论提交哪种表格:'submit-form1' in request.POST # True if Form 1 was submitted
'submit-form2' in request.POST # True if Form 2 was submitted
'submit-form3' in request.POST # True if Form 3 was submitted
关于Django查找提交的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29487016/