2017-09-30 33 views
1

インラインフォームセットのカスタムUI/UXを実行します。Django - インラインフォームセットの削除ボタンの変更

デフォルトでは、インラインフォームセットウィジェットには削除ボタンがあります。

javascriptを使用してインライン・フォーム・ダイナミックからフォームを追加および削除することができます。 場合によっては、削除はチェックボックスではなく単なるボタンであり、他の場合はモーダルウィンドウです。

ユーザーが削除をクリックすると、フォームはjavascriptでページから削除されます。

デフォルトのウィジェットを使用せずにテンプレートのフィールドをレンダリングしようとしていますが、Djangoの魔法のフィールドを削除する方法や、フィールドのIDと名前を再調整する必要があるかどうかはわかりません。

答えて

0

この問題に対する私のソリューションは、ちょうどCheckboxInputウィジェットクラスのテンプレート名を上書きすることでした:

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

私は私のカスタムウィジェットをホストしている私の{}のアプリ/widgets.pyであることを追加しました。私は同じフォーマットを使っているので、それが唯一の方法だと思う。

{アプリ} /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> 

それはinlineformset_factoryなかったであろう場合は、最良の方法はBaseFormSetを拡張する新しいクラスを作成したり、上書きすることでしたウィジェットはadd_fieldsのように、this answerで提案されています。

関連する問題