python - Django:使用动态字段加载表单

标签 python django forms

我创建了一个包含多个动态字段(无类属性)的表单,这些字段被添加到 __init__ 函数中的 self.fields 中,如下所示:

class CustomForm(django.forms.Form):
    def __init__(dynamic_fields, *args, **kwargs):
        super(CustomForm, self).__init__(*args, **kwargs)
        for name, field in dynamic_fields.items():
            self.fields[name] = field

dynamic_fields = {'val1': IntegerField(), 'val2': FloatField()}
CustomForm(dynamic_fields)

现在,我不知道如何在 POST 请求后加载表单。通常,我会做这样的事情:

custom_form = CustomForm(request.POST)
if custom_form.is_valid():
    data = custom_form.cleaned_data
    ...

但是由于调用 super 时 Form 不知道这些字段,所以我不知道之后如何手动加载字段。有想法吗?

最佳答案

您可以在调用 super __init__ 之前更新 base_fields:

class CustomForm(django.forms.Form):
    def __init__(dynamic_fields, *args, **kwargs):
        self.base_fields.update(dynamic_fields)
        super(CustomForm, self).__init__(*args, **kwargs)

dynamic_fields = {'val1': IntegerField(), 'val2': FloatField()}
CustomForm(dynamic_fields)

关于python - Django:使用动态字段加载表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46730065/

相关文章:

python - 如何设置以 X 实例作为参数的 pyqtSignal (类 X 的变量)的类型

python - pygame不会绘制矩形

python - 在django中实现分页和搜索过滤器

python - 无法通过博客实例访问管理器

php - MYSQL - 不插入数据库?

python - 每个点带有颜色编码值的散点图(如 pcolormesh)

Python:拆分字符串,尊重并保留引号

python-3.x - 在 FactoryBoy 中,如何使用空的多对多成员字段设置我的工厂?

JavaScript 重定向不起作用

php - Symfony 自定义验证不起作用