【问题标题】:Django add fields to form dynamically based on number of values in model choice fieldDjango根据模型选择字段中的值数量动态添加字段以形成表单
【发布时间】:2017-11-20 11:52:59
【问题描述】:

目标: 从 Django 表单的模型选择字段中,我正在使小部件显示多个复选框。但是对于每个复选框,我想只显示一个文本框,然后提交。我需要知道复选框是否未选中,它仍然是 id 和可能的文本框值。如果是 Ajax,我如何实现这一点。请详细说明。因为我对 django 还很陌生,并且对 ajax 工作不多。

【问题讨论】:

  • 您能给我们更多关于模型的信息吗? Django 可以从模型中自动创建小部件,但如果只有一个字段或多个字段,您打算如何执行此操作尚不清楚。
  • 该模型是 M2M through 模型...基本上是一个学校应用程序...而我的问题模型是那些注册特定课程的人..出勤登记 我首先要做的是让所有学生注册课程……这是模型中的 FK。然后我需要单独显示它们以被检查/选择为存在,而那些不存在的,我需要选择性地提供 cmets(文本框)。这是我如何让每个学生显示文本框并在他们不存在时获取适当的学生 ID 的挑战。

标签: ajax django django-forms formsets


【解决方案1】:

所以你必须在这里找到可能的方法,

  1. 更简单(但方法很慢): 在用户的复选框输入后提交表单,处理views.py 中的输入,并相应地在不同的模板上提供表单的其他部分。这将导致您重新加载页面并更改同一表单的 URL。如果您一开始只是为了学习 Django,这种方法很好。
  2. 更好的方法。您可以在页面上使用 JavaScript/JQuery 来确定复选框是否被勾选并相应地显示该复选框。你可以做类似的事情

    if(document.getElementById('yourCheckBoxID').checked) 
    {
    $("#FormFieldID").show();
    } 
    else 
    {
    $("#FormFieldID").hide();
    }
    

如果您使用后者,请记住不要将输入字段设置为“必填”,因为在不显示文本字段时可能会引发错误。如果必须,请使用某种 JS 表单验证。

希望这会有所帮助!

【讨论】:

  • 谢谢老兄...这件事让我头疼..如果我通过了会更新你...
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
相关资源
最近更新 更多