4

次のget_readonly_fields方法を使用して、django の管理インターフェイスでオブジェクトを編集できないようにします。

def get_readonly_fields(self, request, obj=None):
    if obj == None or request.user.is_superuser:
        return self.readonly_fields

    # marks all fields as readonly otherwise
    fields = [f.name for f in self.model._meta.fields]
    return fields

これは完全に機能しますが、savesave and continue editingがまだ表示されます。すべてのフィールドが読み取り専用であるため、何もしません。

したがって、私の質問:saveすべてのフィールドが読み取り専用かどうかに応じて、これらのボタンを非表示にする方法はありますか? どうすればこれを実装できますか?

EDIT1:

テンプレートをオーバーライドする方法は知っていますが、admin/submit_line.html代わりにやりたいことは、読み取り専用フィールドしかない場合はshow_saveshow_save_as_newをに設定することです。Falseこれらの変数値を変更するにはどうすればよいですか?

4

1 に答える 1

1

django/contrib/admin には、ボタンをレンダリングする submit_line.html というファイルがあります。それらをオーバーライドするには、テンプレート ディレクトリに admin という名前のフォルダーを作成し、admin/submit_line.html で必要に応じて (特定のルールに基づいて) 変更します。このように変更すると、すべての管理オブジェクト ビュー ページに影響することに注意してください。

于 2012-09-05T19:39:10.243 に答える