インターフェイスを拡張する(アクションを追加する)ことの本質は、モデル管理クラスで__call __(self、request、url)メソッドを実装することです。
私は次のようにしました:
クラスEventAdmin(admin.ModelAdmin): save_as = True def __call __(self、request、url): 印刷URL urlがNoneではなく、url.startswith( 'import /')の場合: self.import_viewを返す(リクエスト、引用解除(url [7:])) その他: return super(EventAdmin、self).__ call __(request、url)
つまり 最初にURLでアクションのプレフィックスを確認し、対応するビューを呼び出すか、親実装に制御を渡します。
私のimport_viewは、特定の識別子を持つオブジェクトを(手動処理で)インポートするために使用されます(つまり、addの本質により、独自の仕様を持つ)ので、change_viewを使用して実装をリッピングしました:-)すべてが非常にシンプルで論理的であることが判明しました。 アクションを実行する権利は、アクション自体の表現から確認されます。 元の追加アクションと同じままにしました。
誰かが役に立つといいのですが:-)