2014-09-04 67 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) 

我希望这可以帮助别人。