Djangoのモデル管理インターフェイスに「カスタムアクション」を追加する

開発版では、そのような機能は「インターフェース」で取り出されて文書化されていますが、管理インターフェースの機能を拡張する必要があったサイトは Django 1.0に構築されており、この機能はまだ存在しません...



インターフェイスを拡張する(アクションを追加する)ことの本質は、モデル管理クラスで__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を使用して実装をリッピングしました:-)すべてが非常にシンプルで論理的であることが判明しました。 アクションを実行する権利は、アクション自体の表現から確認されます。 元の追加アクションと同じままにしました。



誰かが役に立つといいのですが:-)



All Articles