gpt4 book ai didi

django - 为什么我的脆表单布局被忽略了?

转载 作者:行者123 更新时间:2023-12-04 21:15:08 26 4
gpt4 key购买 nike

我正在为一个相当复杂的模型开发一个前端表单,但我对脆皮表单还是个新手。

My Proposal 模型使用两个 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 设置没有效果。

问题是所有表单集字段仍在显示 - 尽管调用了行并且正确的助手已经到位,但好像布局只是被忽略了(我已经尝试将 html 添加到布局中,它是不显示)。

谁能告诉我我做错了什么?随意指出文档的正确部分 - 我已经仔细研究了它但无济于事,我可能遗漏了一些明显的东西。

最佳答案

好的,答案是我使用了 bootstrap/table_inline_formset.html。详细查看它,我发现它直接通过表单字段工作,从而忽略了脆性布局。 -1 在这方面是脆的。

为了指定我的字段,我为表单集创建了一个自定义模型表单,并将这些字段添加到其 Meta 中,因此:

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)

我希望这可以帮助别人。

关于django - 为什么我的脆表单布局被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com