Django管理サイトの「追加」機能を削除する方法はありますか?特定のエンティティについては、Django管理者がそれらを表示したり、既存のエンティティを変更したりできるようにしたいだけで、新しいエンティティを追加したくない場合があります。
6 に答える
参照:DjangoAdmin-真のソリューションのために特定のモデルの「追加」アクションを無効にします。
管理インターフェース内から各ユーザーグループの権限をカスタマイズできます。に移動してみてください/admin/auth/group
。そこから簡単に実行できます。
これは、前の回答で提供されたソリューションほどきめ細かいものではありませんが、管理者をカスタマイズすることなく、ほとんどのニーズに対応します。
確かに、ここの指示に従って管理者を非常にきめ細かくカスタマイズできます。必要なものの一部ModelAdmin.save_model(self, request, obj, form, change)
は、独自のModelAdmin
サブクラスでオーバーライドすることで取得できると思いますchange
。変更よりも)、一部はオーバーライドModelAdmin.add_view(self, request, form_url='', extra_context=None)
して「ビューの追加」を表示することにより、このルートを介してオブジェクトを追加することは許可されないことを管理者に明確に示します。私はあなたが必要とする特定の管理者のカスタマイズを実際には行っていませんが、他のものは行っており、かなりスムーズに機能しているようです!
アクセスを制限するためにアクセス許可を変更しても、FK/MtM フィールドによってプラス記号が表示されます。それをクリックすると、「許可が拒否されました」というメッセージが表示されたポップアップ ウィンドウが開きます。
モデルを管理者に登録しないだけで、実際にはプラス記号を完全に削除できます。
ユーザーが複数選択できるようにしたい定義済みのカテゴリがある状況があります。これを行う最善の方法は、models.ManyToMany フィールドを使用することです。モデルを管理者に登録し、必要に応じてデータを入力してから、登録を削除できます。
簡単で効果的な方法はmax_num=0
、その特定のインラインを設定することです。
max_num=0を設定するというSatyaの提案は完全に機能します。
ModelFormクラスのDjangoドキュメントによると:
JavaScript対応のブラウザーを使用しているユーザーには、「別の追加」リンクが提供され、追加の引数の結果として提供されるものに加えて、任意の数の追加のインラインを追加できるようになります。
現在表示されているフォームの数がmax_numを超えている場合、またはユーザーがJavaScriptを有効にしていない場合、動的リンクは表示されません。
と
通常のフォームセットと同様に、max_numおよび追加のパラメーターをmodelformset_factoryに使用して、表示される追加のフォームの数を制限できます。
max_numは、既存のオブジェクトの表示を妨げません