首页 > 解决方案 > 在 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为此使用。

标签: djangodjango-forms

解决方案


可能您可以尝试这样(通过覆盖该__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'])

推荐阅读