Django查找提交的表单

标签 django formset

我在一个模板中有 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/

相关文章:

django - 在 Python 2.7 和 Django 中使用 Mechanize 库

python 3.6 JsonResponse 问题

python - Django 动态表单集 UpdateView 不更新

python - Django:在 GenericStackedInline 上禁止 can_delete

python - 保存有循环外键的Django模型时,如何一次全部保存?

django - wagtail 页面模型与自身的多对多关系?

python - 在 django Updateview 中保存表单集时出现问题

html - 如何设置从表单集中动态添加的表单的样式

python - 从 Django 中的几种形式收集信息

python - docker-compose 与 postgres 的 Django 连接