【发布时间】:2017-12-12 23:55:37
【问题描述】:
我知道给定一个表单类型,我可以创建一个表单集,允许我根据给定的表单类型创建一组表单。但是,这并不能完全解决我的问题。
假设我有一个快餐店的门户,用户可以在其中添加项目,在他们选择项目后,我们为额外的字段生成表单。例如,如果他们添加一个项目并选择食物类型“饮料”,那么我们会为他们提供添加冰块或让它开始的选项。如果他们选择热食,我们会询问他们是否喜欢辣味。我正在努力使用 Django 表单来实现这一点。如果我有一个包含所有选项的超级表单,无论项目类型如何,我都可以通过创建 FormSet 来完成此操作,但这不是我们正在做的。
当用户使用以下代码更改项目类型时,我可以完成创建新表单并动态更新每个项目:
在 HTML 模板中,我添加以下内容来创建模板。
{% for food_order_form in food_order_form_set %}
<script id="food-order-template-{{ food_order_form.name }}" type="text/x-custom-template">
{{ food_order_form.form.as_p }}
</script>
{% endfor %}
然后我有基于全局变量创建这些表单的 JavaScript 代码:
var all_items = [{'name': 'food'}, {'name': 'drink'}];
$(document).ready(function() {
all_tasks.forEach(function (item, index) {
$("#items-container").append(
'<form id="food-order-inline-form-' + index + '">' +
$('#food-order-template-' + item.name).html() +
'</form>'
);
});
});
我可以通过更改all_items 并调用函数再次呈现表单来指定应该创建哪些表单,但是,我无法轻松显示验证错误。我可以一起破解一些东西来实现这一点,但对于这样的事情来说,破解似乎太多了。使用 Django 是否有更好和/或更清洁的方法?
【问题讨论】:
标签: javascript python django forms django-forms