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