/ / Warum werden meine knusprigen Formset-Layouts ignoriert? - Django, Django-knusprige Formen

Warum werden meine knackigen Formset-Layouts ignoriert? - Django, Django-knusprige Formen

Ich entwickle eine Front-End-Form für ein ziemlich komplexes Modell, und ich bin immer noch neu bei knackigen Formen.

Mein Vorschlagsmodell verwendet zwei m2m-Felder für Abschnitte und Anforderungen, die jeweils mit benutzerdefinierten Tabellen versehen sind. Ich präsentiere das Formular mit Formularen mit dieser Vorlage:

    <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>

Die Helfer sind so eingerichtet:

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")

und dem Kontext hinzugefügt:

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

Die Tabellenlayout- und Form_tag-Bits werden gut aufgenommen (und das Ergebnis sieht gut aus), aber die Einstellungen für self.layout haben keine Auswirkungen.

Das Problem ist, dass alle Formset-Felder vorhanden sindEs wird immer noch angezeigt - obwohl die Zeilen aufgerufen werden und die richtigen Helfer vorhanden sind, werden die Layouts einfach ignoriert (Ich habe versucht, den Layouts HTML hinzuzufügen und wird nicht angezeigt).

Kann mir jemand sagen, was ich falsch mache? Fühlen Sie sich frei, mich auf die richtige Dokumentation zu zeigen.

Antworten:

1 für die Antwort № 1

OK, die Antwort ist in der Tatsache, dass ich das verwendet habebootstrap / table_inline_formset.html. Wenn ich es im Detail anschaue, sehe ich, dass es direkt durch die Formularfelder funktioniert und das knusprige Layout ignoriert. -1 für knusprig in dieser Hinsicht.

Um meine Felder anzugeben, habe ich ein benutzerdefiniertes Modellformular für das Formset erstellt und die Felder zu seinem Meta hinzugefügt:

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)

Ich hoffe, das hilft jemandem.