我不确定我是否采取了正确的方法来实现这一目标。我想要的是(更改css for)/(使用一些jQuery方法)由modelformset呈现的具有预填充数据的表单元素。例如,我有以下modelformset。
EduFormSet = modelformset_factory(models.CandidateDegree,
form=forms.CandidateDegreeForm)
edu_formset = EduFormSet(prefix='candidate_degree',
queryset=models.CandidateDegree.objects\
.filter(candidate=can))
当我将此formset
传递给template
时,它会为所有现有CandidateDegree
对象呈现带有预填充数据和空白表单的表单。
我想要实现的不是显示预先填充的表单,而是显示已经创建的对象的数据,并向元素附加一个编辑按钮(使用jQuery),然后显示表单。并在对象列表的末尾显示由formset生成的空白表单。
我知道我可以传递与CandidateDegree
相关的所有Candidate
个对象作为单独的字典来显示信息。但在这种情况下,如何将表单附加到formset,以便动态生成的表单成为formset的一部分,并在用户单击提交按钮时保存所有信息。
实现这样的目标的最佳方法是什么?
答案 0 :(得分: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