2017-09-15 4 views
0

사용자가 해당 데이터를 편집 할 수있는 특정 권한이없는 경우 인라인을 동적으로 제거하려고합니다. 그러나 인라인은 슈퍼 유저로 로그인했을 때만 나타납니다. 어떻게 해결할 수 있을까요? 나는 내가하고있어 django-nested-inline package. 현재 사용하고 있습니다Django Admin : 인라인 필드를 동적으로 제거하십시오.

class ClientAdmin(NestedModelAdmin): 
    """ 
    Admin for Clients. adp_id is only editable if the user has the permission. 
    """ 
    fieldsets = [ 
    (None, {'fields': [('user', 'company', 'external_id',)]}), 
    ] 
    inlines = [EventInline] 

    def get_form(self, request, obj=None, **kwargs): 
     """ 
     Removes the EventInline if user doesn't have the edit_event permission. 
     """ 
     if not request.user.has_perm('app.edit_event'): 
      self.inlines = [] 
     return super(ClientAdmin, self).get_form(request, obj, **kwargs) 


class EventInline(NestedStackedInline): 
    model = Event 
    fk_name = 'client' 
    ordering = ['completion_time'] 
    fieldsets = [ 
     (None, {'fields': [('training', 'status', 'due_date'), ('authorized_by', 'completion_time'), 'comments']}) 
    ] 
    extra = 0 

내가 inlines에서 EventInline를 제거하거나 읽기 전용 EventInline의 모든 필드를 만들고 싶어. 아무도 아이디어가 있니?

답변

0

사용자가 중첩 된 인라인 이벤트를 추가/수정/삭제할 수있는 권한이 없기 때문에 표시되지 않았습니다. 미래에 누군가가이 문제를 안고있는 경우를 대비하여 저는 그것을 떠날 것입니다.

app | event | Can add event 
app | event | Can change event 
app | event | Can delete event