カスタム JS + フォームを追加する
meta Media
フォーム クラスクラス ORを使用して、任意のスクリプトを管理者に挿入できます。ModelAdmin.Media
https://docs.djangoproject.com/en/dev/ref/contrib/admin/
カスタム フォームを作成して、任意の情報を受け入れることができます ( this_field_doesn't_actually_exist = forms.CharField
)。
フォーム フィールドを受け入れる任意のパラメータにメソッド名をModelAdmin
追加し、そのメソッド名をreadonly_fields
例えば
readonly_fields = ('foo', )
fields = ('foo',)
def foo(self, obj):
return "Arbtrary HTML"
foo.allow_tags = True
今、あなたは持っています
- HTML 画像
- 任意の JavaScript
- Python に渡す任意のフォーム フィールド
カスタム ウィジェットを追加する
コメンターが示唆したように、それ自体をレンダリングする方法を知っているウィジェットまたはカスタムモデルフィールドを構築できます(追加のメディアの追加、入力の表示、戻り値の解析、モデルフィールドの場合のストレージ用の値の変換を含む)が、複数の入力が必要な場合、比較的複雑であることがわかりました。
多くの場所で再利用するものを構築したい場合は、この方法を研究してください。
モデルごとに管理テンプレートをオーバーライドすることもできます
モデルごとにいくつかのテンプレートをオーバーライドすることもできます。カスタマイズの程度によっては、これがよりクリーンな方法になる可能性があります。
個人的には、フォームを本当にカスタマイズする必要があるまで、JS + readonly_field を実行します。
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates
modeladmin ごとにカスタム パスを指定することもできます。
ModelAdmin.add_form_template add_view() によって使用されるカスタム テンプレートへのパス。
ModelAdmin.change_form_template カスタム テンプレートへのパス。change_view() で使用されます。
ModelAdmin.change_list_template カスタム テンプレートへのパス。changelist_view() で使用されます。
ModelAdmin.delete_confirmation_template カスタム テンプレートへのパス。1 つ以上のオブジェクトを削除するときに確認ページを表示するために delete_view() によって使用されます。
ModelAdmin.delete_selected_confirmation_template カスタム テンプレートへのパス。1 つ以上のオブジェクトを削除するときに確認ページを表示するために、delete_selected アクション メソッドによって使用されます。アクションのドキュメントを参照してください。
ModelAdmin.object_history_template history_view() で使用されるカスタム テンプレートへのパス。
管理ビューを完全に上書きすることもできます
admin ビューは単なる django ビューです。次のメソッドをオーバーライドすることで、レンダリングからコンテキストまで完全にオーバーライドできます。
ModelAdmin.add_view(self, request, form_url='', extra_context=None) モデル インスタンス追加ページの Django ビュー。以下の注を参照してください。
ModelAdmin.change_view(self, request, object_id, form_url='', extra_context=None) モデル インスタンス エディション ページの Django ビュー。以下の注を参照してください。
ModelAdmin.changelist_view(self, request, extra_context=None) モデル インスタンスの変更リスト/アクション ページの Django ビュー。以下の注を参照してください。
ModelAdmin.delete_view(self, request, object_id, extra_context=None) モデル インスタンスの削除確認ページの Django ビュー。以下の注を参照してください。
ModelAdmin.history_view(self, request, object_id, extra_context=None)