2012-04-09 20 views
0

ModelAdminを基本クラスとする約50の管理モデルがあります.50個すべてのモデルの削除機能を削除します。私は2つの方法があると思う。すべてのDjango管理者モデルの削除権限を削除します。

  1. 偽を返し、50個のモデル(作業の多く)すべてに対して 'delete_selected'アクションを削除するためのhas_delete_permissionメソッドを再定義します。
  2. 上記のdjango.contrib.admin.AdminModelと同じことを行います。これはソースコードを変更することを意味します。

私はソースコードを変更したくありません。これを行うための他の方法は、2つの方法の上に期待していますか?

答えて

0

3。これら2つの調整を持つadmin mixinクラスを作成し、既存のModelAdminsの基本クラスに追加します

4 Monkeypatch ModelAdmin(あなたの50だけでなく、すべてのモデルに影響します)

5。モンキーパッチもし私が個人的に3となるだろう管理者(それはアプリモデルのすべてだ場合、あなただけの登録管理者を反復処理し、あなたのアプリに属する​​ものと一致する可能性)

は多分他の事これらModelAdminの年代は共通して存在していています?基本クラス/ mixinを追加することは一度の作業であり、その後、他の変更を非常に簡単に行うことができます。

PS:あなたはモデルが削除されていない、それは彼らのデフォルトの管理者のクエリセットは、いずれかを削除しないことを確認するためにおそらく賢明だ確認するには:https://stackoverflow.com/a/6459797/640759

+0

使用してアクションを削除広い部位を除去するために、その可能性: 'admin.site.disable_action( 'delete_selected')'です。 しかし、各レコードに「削除」オプションはありますか?同様の方法がありますか? – girishs

関連する問題