django - 动态添加 django 表单字段并保留用户输入

Posted

技术标签:

【中文标题】django - 动态添加 django 表单字段并保留用户输入【英文标题】:django - Adding django form fields dynamically and preserving user input 【发布时间】:2016-07-19 13:46:34 【问题描述】:

情况就像我有一个职位表,其中的字段是这样的

    职位名称 职位描述 工作资格 工作要求

Job TitleJob Description 是同一个表中的列,称为 JobJob Qualifications 和 JobRequirements 是两个单独的表,名称分别为 JobQualificationsJobRequirements 分别指向(使用 ForeignKey )Job 表。

第 3 和第 4 字段是动态的,至少允许输入一项,但用户可以在表单在浏览器中呈现后添加更多资格和要求。

我处理这个问题的方式。 我们可以使用 javascript 添加字段,但是当用户提交表单时,如果表单出现问题,我们必须重新渲染表单,用户输入仍然存在。

我在#django (IRC) 上与其他人讨论过这个问题,我发现这实际上很有帮助。我们可以像 django 教程 part 72.9.2 添加相关对象 部分那样使用 inline-formsets,但是手动实现它会相当复杂,涉及到一些 javascript。

我不知道该怎么做,感谢任何帮助。

已经谢谢了

【问题讨论】:

【参考方案1】:

您可以在if条件下在表单的init方法中创建字段,例如-

if request.POST:
    if req_field_exists:
         if new_field in request.POST:
            return
         else:
            new_field = forms.Charfield()

这将在用户提交表单时起作用,如果提供了前一个字段,则会添加另一个字段。这不会异步工作或通过 AJAX 工作。

【讨论】:

以上是关于django - 动态添加 django 表单字段并保留用户输入的主要内容,如果未能解决你的问题,请参考以下文章

Django 中的动态表单要求

django 模板:如何知道表单字段类型并根据字段类型添加任何按钮

Django 中的动态模型字段

Django 表单字段动态显示

在 Django 表单中动态显示和隐藏字段

动态自定义 django 表单小部件