在Django中创建动态表单

时间:2013-02-12 22:12:57

标签: django django-forms

我正在开发一个涉及带有一些标准字段的表单的项目,以及一些自定义字段用户稍后定义的项目。标准表单在models.py中的模型上定义。例如:

class Order(models.model):
    number = models.TextField()
    date = models.DateField()

然后我使用此模型创建一个简单的模型表单,以便填写信息。这是非常标准的Django。

棘手的是我的用户希望能够向表单添加任意字段。他们希望能够使用Admin界面基本上修改表单并在运行时为其添加值。

因此,他们可能想要一个名为“跟踪号码”的新文本字段或类似的东西。诀窍是他们有时只需要它,他们希望能够动态添加它而无需重建整个数据库。

我可以创建一个相当简单的模型来表示自定义字段,如下所示:

class CustomField(models.Model):
    type = models.CharField(choices=FIELD_TYPES)
    required = models.BooleanField()

我想我可以将ModelForm用于Order类并扩展它以添加这些自定义字段。我不确定的是如何将自定义字段值链接回订单。

我知道这听起来很奇怪,但在实践中它是有道理的。每个用户对表单的需求略有不同,并希望对其进行调整。如果我必须对模型进行硬编码以获得其特定字段,那么我将不得不为每个用户分配一个分支。这根本就没有扩展。相反,他们可以通过管理界面简单地添加字段,然后事情就会简单得多。

我觉得这可能已经被某人解决了。我根本找不到解决方案。我不能成为唯一一个得到这种要求的人吗?

0 个答案:

没有答案