如何处理元素数量未知的表单提交?

How to handle form submission with unknown number of elements?

处理具有多种表单且其中一种表单中的元素数量未知的页面的最佳方式是什么?

假设我有 3 个模型,Book、Recipe 和 Ingredient,它们需要显示在同一个网页上。每本书也可以包含任意数量的食谱,每个食谱可以包含任意数量的成分。这些模型中的每一个都有一个继承自 ModelForm 的表单。

一旦表单显示给用户,她就可以自由地动态添加她需要的任意数量的食谱或配料。这是通过 JS 完成的,没有 Ajax.

验证表单时处理此问题的最佳方法是什么?验证 Book 的表格很容易,但我该如何处理未知数量的食谱和配料?

解决方案是使用 prefixes 和数字。因此,表格将具有前缀 'recipe_1_',而配方中的每种成分将具有前缀 'ingredient_1_'.

对于第二个食谱和第二组配料,只增加整数。

提交表单时,需要从request.form中获取值,并使用它们来逐一创建表单,通常通过循环遍历request.form的内容并使用前缀来决定使用哪个表格。