2017-09-30 3 views
1

Je fais une interface utilisateur personnalisée pour un jeu en ligne.Django - Modify Inlineformset Bouton de suppression

Par défaut, le widget Inlineformset possède un bouton Supprimer.

Je souhaite ajouter et supprimer des formulaires de la dynamique inlineformset à l'aide de javascript. Dans certains cas, la suppression est juste un bouton au lieu de la case à cocher, dans d'autres cas est dans une fenêtre modale.

Lorsqu'un utilisateur clique sur Supprimer, le formulaire est supprimé de la page avec javascript. Donc, j'essaie de le faire sans utiliser le widget par défaut, de rendre les champs dans le template, mais je ne sais pas comment dire à Django les champs à supprimer et s'il est nécessaire de réajuster les identifiants et les noms des champs .

Répondre

0

Ma solution à ce problème était de remplacer seulement la template_name de CheckboxInput classe widget:

widgets.CheckboxInput.template_name = 'widgets/delete.html' 

J'ai ajouté que dans mon {app} /widgets.py qui héberge mes widgets personnalisés. Comme j'utilise le même format à travers mon application, je pense que c'est la seule façon d'y aller.

{app} /templates/widgets/delete.html:

<div class="checkbox checkbox-styled"> 
<label> 
    <input name={{ widget.name }} type="checkbox" value="true" {% if widget.attrs.checked == True %}checked{% endif %}> 
    <span>Delete</span> 
</label> 
</div> 

Si elle n'aurait pas été le inlineformset_factory alors la meilleure façon est de créer une nouvelle classe extension BaseFormSet et écraser le widget dans add_fields méthode comme suggéré dans this answer.