2009-08-02 15 views
8

Django管理者サイトの「追加」機能を削除する方法はありますか?特定のエンティティについては、私はDjango管理者がそれらを表示したり、既存のものを変更したり、新しいものを追加することはできないようにしたいだけです。Django管理者の「追加」機能を削除する

答えて

3

確かに、あなたは、命令にhereを、以下のことにより、非常にきめ細かい管理をカスタマイズすることができます - 私は何をしたいことは、あなた自身のModelAdminサブクラスにModelAdmin.save_model(self, request, obj, form, change)をオーバーライドすることによって部分的に得られることを信じて、何を保証しないためにchangeがfalseの場合、店舗で発生(つまり、変更するのではなく、追加しようとする)、そして部分的にはModelAdmin.add_view(self, request, form_url='', extra_context=None)を上書きして、「追加ビュー」を表示すると、管理者はこのルートを通じてオブジェクトを追加することを許可されません。私は実際にあなたが必要とする特定の管理者のカスタマイズはしていませんが、私は他の人たちとやりとりしました。彼らはかなりスムーズに動作するようです!

+0

を表示してから、既存のオブジェクトを妨げるものではない答えをいただき、ありがとうございます。私はこれを達成する設定、save_as ModelAdminプロパティの働きを期待していました。 –

+0

私はこのようなDjango 1.0の設定は認識していませんが、おそらく1.0以上のものや、それを供給するためのハックがあります。在庫1.0.somethingはこれまでのところ固執しています。アプリのエンジン、私は;-)告白する。 –

+1

この回答は物事を複雑にします。ユーザーの削除権限の追加は、あなたが記述した状況に対して完璧にトリックを行います。 (これは、モデルごとではなくインスタンスごとに制御する必要があることを前提としています)。 –

3

adminインターフェイス内から各ユーザグループのアクセス許可をカスタマイズすることができます。/admin/auth/groupに行ってみると、そこから簡単にアクセスできます。

これは、以前の回答の解決策ほど細かくはありませんが、管理者をカスタマイズしなくてもほとんどのニーズに対応できます。

+2

しかし、OPは具体的には*管理者が特定のことをするのをブロックしたいので、質問はそのように明確に述べていますが、管理者が許可の変更を元に戻すことを阻止する方法は何でしょうか(特に管理者いくつかの管理を行う;-)? –

+0

@Alex:これは本当です - 私は私の応答をあなたの応答のより単純な代替手段として意味しましたが、単純さにはもちろん限界があります。 – anschauung

2

アクセス権を変更してアクセスを制限すると、FK/MtMフィールドでプラス記号が表示されます。これをクリックすると、「Permission Denied」と表示されたポップアップウィンドウが開きます。

実際には、管理者にモデルを登録していないだけでなく、プラス記号を完全に削除することもできます。

私は、ユーザーが複数のカテゴリを選択できるようにするためのカテゴリを事前に定義している状況があります。これを行う最善の方法は、models.ManyToManyフィールドです。モデルを管理者に登録し、必要に応じてデータを入力して登録を削除することができます。

1

簡単に効果的な方法は、特定のインラインでmax_num=0を設定することです。

0

Satyaの提案では、max_num = 0に設定すると完全に機能します。

のModelFormクラスのDjangoのドキュメント毎

:JavaScript対応のブラウザでユーザーのために

、「追加別」のリンクが提供されたものに加えて追加される追加のインラインの任意の数を可能にするために提供されます余分な議論の結果として。

現在表示されているフォームの数がmax_numを超えた場合、またはJavaScriptが有効になっていない場合は、ダイナミックリンクは表示されません。通常のフォームセットと同様に

、あなたが表示され、余分なフォームの数を制限するmodelformset_factoryするMAX_NUMと追加のパラメータを使用することができます。

MAX_NUMは

関連する問題