2014-09-04 55 views
2

我正在爲一個相當複雜的模型開發一個前端表單,而我對於脆皮表單仍然陌生。爲什麼我的脆皮模板佈局被忽略?

我的建議模型使用了兩個m2m字段用於部分和要求,每個字段都有自定義的通過表。我提出使用表單集與此模板的建議形式:

<div class="tab-content panel-body"> 
     <div id="basic-information" 
      class="tab-pane active" > 
      {% crispy form %} 
     </div> 
     <div id="sections" 
      class="tab-pane" > 
      {% crispy sectionmap_formset sectionmap_formset_helper %} 
     </div> 
     <div id="requirements" 
      class="tab-pane" > 
      {% crispy requirementmap_formset requirementmap_formset_helper %} 
     </div> 
    </div> 

的助手們正在建立這樣的:

class MapFormSetHelper(FormHelper): 
    template = 'bootstrap/table_inline_formset.html' 

    def __init__(self, form=None): 
     super(MapFormSetHelper, self).__init__(form) 
     self.disable_csrf = True 
     self.form_method = 'post' 
     self.form_tag = False 


class SectionMapFormSetHelper(MapFormSetHelper): 
    def __init__(self, form=None): 
     super(SectionMapFormSetHelper, self).__init__(form) 
     self.layout = Layout('order', 'section', 'placement') 


class RequirementMapFormSetHelper(MapFormSetHelper): 
    def __init__(self, form=None): 
     super(RequirementMapFormSetHelper, self).__init__(form) 
     self.layout = Layout('order', 'requirement', 'selected_option') 

,並加入到這樣的背景:

def get_context_data(self, **kwargs): 
    context = super(ProposalUpdateView, self).get_context_data(**kwargs) 
    proposal = context['proposal'] 

    # Add formsets 
    for model_class, context_key, formset_class in (
      (pm.ProposalSectionMap, 'sectionmap_formset', forms.SectionMapFormSet), 
      (pm.ProposalRequirementMap, 'requirementmap_formset', forms.RequirementMapFormSet)): 
     qs = model_class.objects.filter(proposal=proposal) 
     context[context_key] = formset_class(queryset=qs) 

    # Add helpers 
    context['sectionmap_formset_helper'] = forms.SectionMapFormSetHelper() 
    context['requirementmap_formset_helper'] = forms.RequirementMapFormSetHelper() 

    return context 

的表格佈局和form_tag位拾取良好(並且結果看起來不錯),但self.layout設置沒有任何作用。

問題是,所有的formset字段仍在顯示 - 儘管行被調用,並且右側的助手已經到位,這就好像佈局被忽略了一樣(我嘗試添加html到佈局和它不顯示)。

誰能告訴我我做錯了什麼?隨意指出我的正確位置 - 我已經無視它了,我可能錯過了一些顯而易見的東西。

回答

1

好的,答案是我已經使用bootstrap/table_inline_formset.html。仔細觀察,我發現它直接通過表單域工作,因此忽略了脆弱的佈局。 -1在這方面很脆。

要指定我的領域我創建了表單集定製模型的形式和添加字段到它的元這樣的:

class SectionMapForm(forms.ModelForm): 
    class Meta: 
     model = pm.ProposalSectionMap 
     fields = ('order', 'section', 'placement') 

SectionMapFormSet = modelformset_factory(pm.ProposalSectionMap, form=SectionMapForm, extra=1) 


class RequirementMapForm(forms.ModelForm): 
    class Meta: 
     model = pm.ProposalRequirementMap 
     fields = ('order', 'requirement', 'selected_option') 

RequirementMapFormSet = modelformset_factory(pm.ProposalRequirementMap, form=RequirementMapForm, extra=1) 

我希望這可以幫助別人。