2012-12-21 53 views
0

我不太確定如果採取正確的方法來完成此操作。我想要的是(更改css)/(使用一些jQuery方法)由modelformset呈現的表單元素具有預填充數據。例如,我有以下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生成的空白表單。

我知道我可以將與Candidate相關的所有CandidateDegree對象作爲單獨字典顯示出來。但在那種情況下,我如何將表單附加到formset,以便動態生成的表單成爲formset的一部分,並且當用戶單擊提交按鈕時保存所有信息。

什麼是最好的方法來實現這樣的事情?

回答

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

相關問題