如何在Django中设计逐步表单?

时间:2017-09-10 02:03:32

标签: javascript python django django-models architecture

我已经在我的Django网络应用程序上工作了很长一段时间,并且由于最初的糟糕计划,我一直在不断改变和移动我的网络应用程序中的东西,所以现在它是一个完整的混乱。我决定停止编写代码并反思我希望这些东西是如何工作的。

提出的一个问题是人们必须填写的申请表。

models.py

class Contact(models.Model):
    ContactName = models.CharField(max_length = 250, default='',         
verbose_name="Contact Name")
    Country = models.CharField(max_length = 250, default='')
    City = models.CharField(max_length = 250, default='')
etc. 

我的表格中会有超过一百个字段,我不希望它们全部显示,而是一步一步地显示它们:

个人信息 - >一般信息 - >上传支持的文档 - >等。

我有两个问题:

  1. 我应该将所有100个字段保留在一个类(联系人)下还是将它们分成几个类并使用ForeignKey连接它们?最佳做法是什么?

  2. 填写个人信息字段后,申请人将按继续,然后将其移至“常规信息”并填写完整信息等。是应该在Django views.py中处理这个逻辑还是使用JavaScript完成它?或者它是两者的结合?

  3. 在我再次触摸键盘之前,我只是想知道一切是如何工作的。

1 个答案:

答案 0 :(得分:1)

首先,永远不要基于UI设计您的应用程序。表示层不是唯一的,您可以使用不同的表示层,如Web UI,移动UI和第三方API接口。

创建后端时,请不要为演示文稿定制。演示文稿是否必须适应。

使用ER图表在纸上创建模型,如果需要向导表单,可以使用前一个Form Wizard现在Form tools https://django-formtools.readthedocs.io/en/latest/创建一组表单收集和验证数据并在后端创建模型(复数)。

使用表单工具您不需要使用javascript。使用formtools可以创建许多不同的表单来一起运行。每个表单都有自己的验证,但最后你有一个done函数来管理所有数据,以创建你需要的。

您不需要JS,但您可以使用正确的JS工具来改善UX(用户体验)。我此刻并不在意。您当前的问题是管理您的应用程序的设计,以及您稍后可以处理的演示文稿。