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 № 1J'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 ...