Framework/Django

Django - Admin 에서 수정/삭제/추가 방지하기

청렴결백한 만능 재주꾼 2021. 7. 19. 22:40
반응형

수정 삭제 추가 기능을 방지한 것과 그렇지 않은 것의 차이.

 

결제 기록 같이 수정이 필요없는 것은 막아 놓는게 좋다.

 

from django.contrib import admin

class AAInline(admin.TabularInline):
    model = AA

class BBInline(admin.TabularInline):
    model = BB

class CCInline(admin.TabularInline):
    model = CC

class DDInline(admin.TabularInline):
    model = DD

class FFInline(admin.TabularInline):
    model = FF
    readonly_fields = ['aa','bb','cc','dd','ff',]
    
    def has_delete_permission(self, request, obj=None):
        #Disable delete
        return False
    
    def has_add_permission(self, request, obj=None):
        #Disable add
        return False
        
    def has_change_permission(self, request, obj=None):
        #Disable update
        return False

class ZZAdmin(admin.ModelAdmin):
    def has_delete_permission(self, request, obj=None):
        #Disable delete
        return False

    list_display = ['__str__',]
    inlines = [AccountCoursePeriodInline]

class GGAdmin(admin.ModelAdmin):
    list_display = [
        'gg',
        'hh',
        'jj'
    ]
    list_display_links = [
        'gg',  
    ]
    inlines = [AA, BB, CC, DD]

class QQAdmin(admin.ModelAdmin):
    list_display = ['id','start_date', 'end_date']

class WWAdmin(admin.ModelAdmin):
    list_display        = ['tt', 'pp','oo','ii','yy']
    list_display_links  = ['tt']
    list_filter         = ('tt',)

class EEAdmin(admin.ModelAdmin):
    list_display = ['rr','ll','kk']

admin.site.register(FF, FFInline)
admin.site.register(ZZ, ZZAdmin)
admin.site.register(GG, GGAdmin)
admin.site.register(QQ, QQAdmin)
admin.site.register(WW, WWAdmin)

하나의 어드민  코드

 

아래의 코드를 넣으면 수정을 못하게 할 수 있다.

def has_delete_permission(self, request, obj=None):
        #Disable delete
        return False
    
def has_add_permission(self, request, obj=None):
        #Disable add
        return False
        
def has_change_permission(self, request, obj=None):
        #Disable update
        return False
반응형