2010-02-10 101 views
2

我试图根据存储在数据库中的字段及其定义动态地构建表单。在我的数据库中,我已经定义了1个复选框,其中包含一些标签和一个带有某个标签的文本框。在Django中构建动态表单

如何从db中的数据在我的视图中动态创建表单?

感谢

回答

4

的Django确实从model definitions.

第一步一个伟大的自动生成工作形式可能会创建一个反映现有数据库的Django模型。

关于复选框/文本字段的东西:

Django的具有字段部件之间有很大的分离。您可能有一个存储数字的IntegerField,但您可以改变显示给用户的小部件,以便编辑该号码。在某些情况下,您可能有一个输入框,在其他情况下可能有一个textarea,或者一个下拉列表。 字段将处理类型转换和验证等细节,小部件确定表单字段的样子。

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

另外,还要注意有表单字段示范田之间的差异


要动态地做到这一点,可以将项目添加到self.fields SortedDict上。 I.E:

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) 

会给你一个表单类,它用5个动态生成的CharFields实例化。

+0

该项目是模型免费。没有定义模型。假设数据正在从输入文件(如XML)中读取,而不是从数据库中读取。 – user140736 2010-02-10 03:41:17