Python 在django中构建动态表单

Python 在django中构建动态表单,python,django,django-forms,Python,Django,Django Forms,我正在尝试根据存储在数据库中的字段及其定义动态构建表单。在我的数据库中,我定义了一个带有一些标签的复选框和一个带有一些标签的文本字段 如何从数据库中的数据在视图中动态构建表单 谢谢Django从您的 第一步可能是创建一个Django模型来镜像现有数据库 关于复选框/文本字段内容: Django在字段和小部件之间有很大的分离。您可能有一个存储数字的IntegerField,但是当用户想要编辑数字时,您可以改变显示给他们的小部件。在某些情况下,您可能有一个输入框,在另一些情况下,您可能有一个文本区域

我正在尝试根据存储在数据库中的字段及其定义动态构建表单。在我的数据库中,我定义了一个带有一些标签的复选框和一个带有一些标签的文本字段

如何从数据库中的数据在视图中动态构建表单


谢谢

Django从您的

第一步可能是创建一个Django模型来镜像现有数据库

关于复选框/文本字段内容:

Django在字段小部件之间有很大的分离。您可能有一个存储数字的IntegerField,但是当用户想要编辑数字时,您可以改变显示给他们的小部件。在某些情况下,您可能有一个输入框,在另一些情况下,您可能有一个文本区域,或者可能有一个下拉列表。字段将处理诸如类型转换和验证之类的细节,小部件确定表单字段的外观

某些字段类型具有与之关联的默认小部件,但您可以覆盖它们

另外,请注意,在表单字段模型字段之间存在差异


要动态执行此操作,可以动态地将项目添加到self.fields sortedct。即:

from django.forms.forms import Form
from django.forms.fields import CharField
class FunkyForm(Form):
    def __init__(self, *args, **kwargs):
        super(FunkyForm, self).__init__(*args, **kwargs)
        for item in range(5):
            self.fields['test_field_%s' % item] = CharField(max_length=255)

将为您提供一个form类,该类使用5个动态生成的CharFields进行实例化

以下是我在EuroDjangoCon上做的一次演讲中的幻灯片:

该项目是无模型的。没有定义任何模型。让我们假设数据是从输入文件(如XML)而不是数据库中读取的。好东西!真希望我刚开始的时候读过这篇文章,因为当你开始实际使用Django表单时,你在这里展示的很多东西都会让你的大脑感到困惑。