くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

DjangoでRead OnlyなModelAdmin

DjangoのAdmin Siteで特定のModelで参照だけしたいときがあったので、
いろいろ調べてみたときの備忘録。

ReadOnlyAdmin

こんな感じで、全部OFF or 処理を空にすればよさそう。

from django.contrib import admin

class ReadOnlyAdmin(admin.ModelAdmin):
    def __init__(self, *args, **kwargs):
        super(ReadOnlyAdmin, self).__init__(*args, **kwargs)
        # すべてのフィールドをreadonlyに設定
        self.readonly_fields = [field.name for field in self.model._meta.get_fields()]

    def has_add_permission(self, request):
        # 追加の権限OFF
        return False

    def has_change_permission(self, request, obj=None):
        # 変更の権限OFF
        return False

    def has_delete_permission(self, request, obj=None):
        # 削除の権限OFF
        return False

    def save_model(self, request, obj, form, change):
        # save時の処理で何もしない
        pass

    def save_related(self, request, form, formsets, change):
        # save時の処理で何もしない
        pass
        
    def delete_model(self, request, obj):
        # delete時の処理で何もしない
        pass

以上!!

参考にしたサイト様