如何初始化字段类型可变的Django表单
Posted
技术标签:
【中文标题】如何初始化字段类型可变的Django表单【英文标题】:How to initialize Django forms where fieldtype is variable 【发布时间】:2020-06-29 22:04:18 【问题描述】:我有一个这样的 json 对象:
"Enzyme":
"order": 1,
"required": "no",
"help": "enzyme",
"dataType": "CharField" ,
"Date":
"order": 2,
"required": "yes",
"help": "date",
"dataType": "DateField"
现在我想初始化一个类似这样的表单:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
for key,values in jsonObj.items():
self.fields[key] = forms.values["dataType"]
我不确定我该怎么做,因为从我的 json 输入中获取这个数据类型。表格后我应该写什么。初始化表格?现在它正在抛出错误module 'django.forms' has no attribute 'values'
【问题讨论】:
这能回答你的问题吗? Making a Django form class with a dynamic number of fields 感谢阿拉卡尔!我研究了动态表单,但没有什么真正符合我的要求。 【参考方案1】:答案应该是: getattr(forms, values["dataType"])
与此类似: Accessing models by variable model name in django
这种方式可以帮助我从存储在数据库中的 json 创建动态表单。
【讨论】:
以上是关于如何初始化字段类型可变的Django表单的主要内容,如果未能解决你的问题,请参考以下文章
如何修改 Django 中特定类型的所有内置表单字段的默认小部件?
Django:如何在呈现之前但在表单初始化之后修改表单字段的值?