根据用户输入使用Django表单和任意元素

时间:2017-08-14 05:34:11

标签: django forms

我正在使用Django(1.11.1)应用程序,该应用程序允许用户请求对某些购买进行补偿。请求表单的一部分(使用django.forms)是逐项列表的购买。当然,我可以在表单中硬编码一些行,并在用户需要更多行时让用户提交单独的表单。但这似乎相当不优雅。

我首选的解决方案是允许用户通过JavaScript根据需要添加行,然后在表单中动态处理。但是,我在该主题上发现的所有内容都涉及在将表单呈现为HTML时可以确定所需元素数量的情况。我不清楚如何在我的情况下应用这种方法。

由于动态添加表单元素非常常见,我有点惊讶的是,这些功能还没有被添加到Django中。

顺便说一下,由于这是一个非常简单的应用程序,我不想要一个需要大量工作的解决方案。如果没有简单的解决方案,那么将表单HTML直接硬编码到模板中会更好。

1 个答案:

答案 0 :(得分:0)

当然它被django覆盖。 您需要使用formset https://docs.djangoproject.com/en/1.11/topics/forms/formsets/

然后在模板中,您需要通过javascript更好地添加更多表单,以便更好地添加到该formset中。 Dynamically adding a form to a Django formset with Ajax

这可能导致难以理解django为formset提供的所有选项,但它是非常强大且最简单的方法。