0

我不太确定我是否采取了正确的方法来实现这一目标。我想要的是(更改css)/(使用一些jQuery方法)由具有预填充数据的modelformset呈现的表单元素。例如,我有以下模型集。

    EduFormSet = modelformset_factory(models.CandidateDegree,
                 form=forms.CandidateDegreeForm)
    edu_formset = EduFormSet(prefix='candidate_degree',
                  queryset=models.CandidateDegree.objects\
                           .filter(candidate=can))

当我将它传递formsettemplate它时,它会为所有现有CandidateDegree对象呈现表单,其中包含预填充的数据和一个空白表单。

我想要实现的不是显示预填充的表单,而是显示已经创建的对象的数据,并将编辑按钮附加到元素(使用 jQuery),然后显示表单。并在对象列表的末尾显示由 formset 生成的空白表单。

我知道我可以将CandidateDegree与 a 相关的所有对象Candidate作为单独的字典传递以显示信息。但在那种情况下,我如何将表单附加到表单集,以便动态生成的表单成为表单集的一部分,并且当用户单击提交按钮时,所有信息都会被保存。

实现这样的目标的最佳方法是什么?

4

1 回答 1

1

您不必显示完整的表单,您可以像这样遍历表单集:

 {% for form in edu_formset %}
      form.FIELDNAME#1.value
      form.FIELDNAME#2.value
      etc.
 {% endfor %}

 <!-- Manually render empty form for new entry -->
 <div class='input'>
     <label>Locality: </label> <input id="FIELDNAME#1" disabled=disabled value="">
     <label>Country:  </label> <input id="FIELDNAME#2" disabled=disabled value="">
     etc.
 </div>

因此,您只显示发送到模板的所有对象的数据库值,而不是表单输入。

然后确实使用最少的 jquery(或纯 javascript),您可以显示/隐藏 div.input

于 2012-12-21T12:18:25.280 回答