django - 在 Django 中生成表单类
问题描述
我正在构建一个入职/设置流程,我想在字典中定义字段、字符串等,并自动生成每个页面上的表单。
forms.py 目前有:
class OnboardingEducationForm(forms.Form):
school_1 = forms.CharField(label='School Name(s)', max_length=100, required=False)
school_2 = forms.CharField(max_length=100, required=False)
school_3 = forms.CharField(max_length=100, required=False)
如何从如下所示的 json 文件自动生成这些类:
setup_content = {
"form": {
"fields": [
{
"name": "school_1",
"args": {
"label": "School Name(s)",
"max_length": "100",
"required": "False",
},
},
{
"name": "school_2",
"args": {
"max_length": "100",
"required": "False",
},
},
{
"name": "school_3",
"args": {
"max_length": "100",
"required": "False",
},
}
]
}
}
注意:这不适用于模型表格。我正在modelform_factory
为此使用。
解决方案
可能您可以尝试这样(通过覆盖该__init__()
方法):
FIELDS = setup_content['forms']['fields']
class OnboardingEducationForm(forms.Form):
def __init__(self, *args, **kwargs):
super(OnboardingEducationForm, self).__init__(*args, **kwargs)
for field in FIELDS:
self.fields[field['name']] = forms.CharField(**field['args'])
推荐阅读
- javascript - 如何在查询字符串参数中发送数组数组?
- javascript - Javascript 不认为我的变量是变量(数组问题)
- linux - Bash 脚本在终端模拟器中工作,但不能作为 i3 键绑定
- hbase - EMR 是否支持 Hbase 复制
- count - 如何使用 Count 从 Power BI 中同一表的另一列的一列中获取总计?
- android - 在片段中从布局中删除空格:CollapsingToolbarLayout +NestedScrollView + ViewPager
- javascript - 在 mongoDB 中插入记录然后更新它 - Node.Js
- spring-mvc - 如何将模型属性添加到默认错误页面
- compiler-construction - 野牛中间规则动作不起作用
- vbscript - 通过命令行 .rev1 在 Windows 中重命名由条件选择的多个文件