如何初始化字段类型可变的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 中特定类型的所有内置表单字段的默认小部件?

如何在django中为问题添加多个表单字段类型的选项?

Django:如何在呈现之前但在表单初始化之后修改表单字段的值?

Django 表单字段验证 - 如何判断操作是插入还是更新?

如何在渲染django模板时动态设置表单选择字段的初始值