【问题标题】:Django: One model multi-steps formsDjango:一种模型多步骤表单
【发布时间】:2014-07-07 12:11:51
【问题描述】:

我正在尝试从一个具有 9 个字段的 Django 模型构建多步骤表单。表格在每个步骤中都经过验证,并在最后一步后保存到数据库中。

除了 Django formWizard,我能想到的快速解决方案是

我有一个这样的 django 模型:

class Question(models.Model):
    name = models.CharField(max_length=100)
    Description = models.TextField()
    filter = models.CharField(max_length=20)

我把表格分成三份

class Filter(forms.ModelForm):
    class Meta:
        model = Question
        exclude = ('filter',)


class Name(forms.ModelForm):
    class Meta:
        model = Question
        fields = ('name',)


class Descripton(forms.ModelForm):
    class Meta:
        model = Question
        fields = ('description',)

编写urls 并与views 集成以进行不同的步骤。问题是如何在最后一步验证和保存多步骤表单数据?

【问题讨论】:

    标签: django forms model multi-step


    【解决方案1】:

    您将其分为三个步骤而不是一个步骤的用例是什么?

    除此之外,一个简单的解决方案是:

    1. 每次提交后清理/验证部分数据。
    2. 将隐藏字段中的部分数据发送回您的模板以供后续步骤使用(也许 Name 可以使用 Filter 继承或初始化,与 Description 中的 Name 相同)。
    3. 然后在最终提交时,您将拥有所有以前的数据(一些在隐藏字段中),因此您可以将其全部保存到您的数据库中。

    【讨论】:

    • 那么拆分的情况是针对前端的UX部分的。
    • 在这种情况下,ajax 是一种可接受的解决方案吗?您可以使用单个模型表单并在 UI 中手动拆分字段。然后对于每个部分,有一个“提交”按钮,通过 ajax 请求将部分表单数据发送回以进行清理。如果您收到“OK”回复,您可以将它们移至表单的下一部分。否则,显示错误。您的最终提交按钮将是一个实际的 POST 到服务器,因此您可以进行最后一次清理并立即保存所有内容。
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多