Django 中的复杂表单小部件
Posted
技术标签:
【中文标题】Django 中的复杂表单小部件【英文标题】:Complex form widgets in Django 【发布时间】:2011-02-10 23:54:37 【问题描述】:我正在寻找在 Django 中生成一个相当复杂的表单的好帮手库。
动态字段依赖关系:假设选择了选项 a,则显示/隐藏某些字段,其中的子集是强制性的,具体取决于选项选择。
添加更多:单击“添加更多”按钮会克隆一些小部件。
这是 ToscaWidgets 能够处理的事情。
http://toscawidgets.org/documentation/tw.dynforms/tutorial.html#growing
Some working ToscaWidgets Demos
目前我正在使用一些 jquery 代码来管理它,但并不完全满意。遗憾的是由于某种原因无法使用 ToscaWidgets。
TIA
【问题讨论】:
【参考方案1】:我使用了一个高度定制的Formset
来制作一个具有复杂用户权限依赖关系的相当复杂的表单。这涉及到子类化django.forms.formsets.BaseFormSet
,覆盖__init__
、add_fields
、is_valid
和save
,当然还有使用定制的Form
。最终的产品有点毛茸茸,但我在 6 个月左右后仍然能够理解和修改它。
我没有使用 Formset 功能来处理添加和减去子表单,但这应该可以满足您的需求。
文档地址:http://docs.djangoproject.com/en/1.1/topics/forms/formsets/
【讨论】:
【参考方案2】:经过一番搜索,我找到了一个解决方案。 django-dynamic-formset 基于 django formsets 解决了这个目的。令人印象深刻的工作
PS:稍后会尝试添加一些截图。
【讨论】:
以上是关于Django 中的复杂表单小部件的主要内容,如果未能解决你的问题,请参考以下文章
Django:使用小部件来限制 ModelForm 中的选择