如何在Django中创建多步骤表单,其中步骤彼此依赖

时间:2020-01-11 19:58:48

标签: python django django-forms django-formwizard django-formtools

免责声明:我知道这个问题主要是关于征求意见,但我不知道如何将其转化为带有“真实”代码的东西。

上下文

我目前正在建立一个表单(或一组表单),该表单将允许用户填写时间跟踪信息。

过程

该过程可以分解为3个步骤:

  • 提供一些基本信息(日期和活动类型-例如,从事项目,会议,与客户见面...)
  • 根据活动类型,提供更多详细信息(例如,项目名称,客户名称,花费的时间...)
  • 提交表格

型号

所有信息都存储在一个模型中。因此,仅需要在步骤1中提供的信息(活动的日期和类型)。

当前方法

我目前在屏幕上显示1个Django ModelForm。所有数据都在模型级别进行了验证(因此,如果用户希望通过API输入数据,则也将强制执行业务逻辑)。 在前端,通过选项卡和Javascript(可根据第一个选项卡上的单选按钮切换要提供的其他信息的可见性)来管理各个步骤。

当前的痛点

  • 某些验证是在客户端和服务器端进行的(公共字段),而某些验证仅在服务器端进行
  • 当前的解决方案似乎是 messy ,我有一种感觉,我正在反对 django框架
  • 此解决方案迫使我在保存模型时可能会擦除数据。如果用户选择一种活动类型,填写该类型的详细信息,改变主意,然后选择另一种类型,填写该活动的数据,则由于与该活动无关,我必须删除为第一个活动提供的数据。

当前想法

我当时正在考虑创建n个ModelForms类(公共,project_activity,meeting_activity,customer_visit等),在该类中仅显示相关字段并使其成为必需字段。认为,然后考虑进行以下步骤: 1.普通 2.根据常见的数据发布,渲染相应的表格 3.提交

由于这是表格的主要重构,因此我请您检查当前的想法是否是最好的方式。或者,如果有更聪明的方法。

我碰到了django form wizard,但是我看过的教程似乎暗示将列表形式硬编码到urls.py文件中(我不能拥有),许多人报告说他们不得不努力(例如here)。

0 个答案:

没有答案