如何将一个表单向导嵌入另一个表单向导中?

时间:2016-06-16 19:52:39

标签: python django django-formwizard

我正在使用Django v1.9实现web-app。我需要对网站进行部署和配置,以尽可能做到万无一失。

所以我想实现首次使用方案,它允许网站管理员通过网站本身配置网站。

显而易见的候选人是表单向导。

该网站需要配置几个资源。它可以包含每个资源的多个实例,但每个资源必须至少有一个实例。

因此,最小的首次使用序列可能是:

  1. 配置ResourceA的实例
  2. 配置ResourceB的实例
  3. 将这些设为活动实例。
  4. 做其他一次性设置
  5. 稍后,管理员需要为这些资源定义其他实例,上面的步骤1和2非常复杂,每个都需要保证自己的FormWizard;特别是因为它们需要独立使用来配置每种资源类型的其他实例。

    这意味着我的第一次使用场景实际上是

    • 启动首次使用向导
      • 运行'添加资源1实例'向导
      • 运行'添加资源2实例'向导
      • 在其他几种形式上做其他一次性的事情
    • 结束首次使用向导

    我的心告诉我,我应该能够以这种方式嵌套向导,获得良好的功能重用。 Django和Python一般都是DRY。

    但是我还是试图弄清楚如何解决问题。我一直在谷歌上搜索并试验足够的时间来感受那里没有任何东西。

    可以这样做吗?如果是这样,怎么样?

    编辑:

    试图澄清。假设每个向导都有一个与之关联的基于功能的视图

    def AddResource1view(request):
        # Display the pages of the wizard to build object 1
        # for model Resource1
        object1.save()
        return object1
    
    def AddResource2view(request):
        # Display the pages of the wizard to build object 2
        # for model Resource2
        object2.save()
        return object2
    
    def FirstUseView(request):
        config = SystemConfiguration()
        config.r1 = AddResource1view(request)
        config.r2 = AddResource2view(request)
        # NOw step through the remaining pages of FirstUse wizard
        # filling out config
        ...
        config.save()
    

    我的urls.py会有指向三个视图中的每个视图的网址(通过FormWizard.as_view())因此您可以独立运行任一资源向导,也可以作为外部FirstUse向导的一部分运行。

    显然,以上不是真正的代码 - 它只是通过嵌套来表达我的意思。

0 个答案:

没有答案