django中最终用户的动态表单

时间:2017-03-14 00:54:39

标签: python django forms django-models

我正在创建一个django项目,任何用户都可以创建包含任意数量字段的表单。例如,用户A可以创建以下表单:

  • 字段名称:Field_1 - 类型:文字
  • 字段名称:Field_2 - 类型:日期
  • 字段名称:Field_3 - 类型:文件

用户B可以创建:

  • 字段名称:名称 - 类型:文字
  • 字段名称:电话 - 类型:文字

看看用户需要向程序说明字段的名称和类型。因为是为每种表单创建任意数量的表单和任意数量的字段的动态方式。什么是创建数据库模型的最有效方法?

考虑到程序在用户发送之前不知道该字段的名称。因此,在视图中,我无法使用字段的确切名称来处理它。

1 个答案:

答案 0 :(得分:1)

如果在数据库中创建两个表,则可以非常轻松地处理。有一个表将序列化表单存储为JSON,另一个表保存表单数据(以及表单定义的链接)。

你如何序列化它取决于你,但它看起来像这样:

序列化表格

{
  "fields": [
    {
      "name": "field_name"
      "type": "text"
      "attrs": []
    }
  ]
}

序列化数据(ForeignKey以上形式)

{
  "data": {
    "field_name": "value"
  }
}

这样做的好处是你不是动态创建模型,而且你的数据库保持更清洁,因为你不会有大量的表。