/ / Django crispy form avec formset ne montre pas la case à cocher delete - django, django-crispy-forms

La forme croustillante de Django avec formset ne montre pas la case à cocher supprimer - django, django-crispy-forms

J'ai une structure de code très similaire à cet exemple: https://gist.github.com/ibarovic/3092910

Tout fonctionne plutôt bien, sauf que la case à cocher supprimer après chaque élément de livre n'est pas affichée du tout. Si je change

{% crispy formset formset.form.helper %}

à

{% crispy formset %}

les cases à cocher supprimer sont affichées, mais le formulaire ne fonctionne plus (b / c, les balises de formulaire HTML ne sont pas utilisées une seule fois).

Je soupçonne que ces cases à cocher ne sont pas connuesle BookForm (b / c ils sont en quelque sorte ajoutés plus tard par inlineformset_factory), donc ils ne sont pas ajoutés à la mise en page et sont ignorés. Je ne sais pas comment contourner cela.

Réponses:

3 pour la réponse № 1

J'ai trouvé une solution grâce à ceci: Django crispy-forms, BaseGenericInlineFormSet & allow_delete

Dans le BookForm (qui se répète plusieurs fois) init, vous pouvez ajouter quelque chose comme:

self.helper = FormHelper(form=self) # or manual layout
self.helper.form_tag = False

i = self.helper.layout.fields.index("title")
self.helper.layout.insert(i+1, layout.Field("DELETE"))

Le champ "DELETE" en lettres majuscules est ensuite ajouté à chaque BookForm ...