2017-09-15 9 views
0

ユーザーがそのデータを編集するための指定された権限を持っていない場合、インラインを動的に削除しようとしています。しかし、インラインは、スーパーユーザーとしてログインしているときにのみ表示されます。どうすればこの問題を解決できますか?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のすべてのフィールドを作りたい:私は現在、私がやっているdjango-nested-inline package.を使用しています。誰にもアイデアはありますか?

答えて

0

ユーザーには、ネストされたインラインイベントを追加/編集/削除する権限がないため、表示されませんでした。誰かが将来この問題を抱えている場合に備えて、私はそれを残すでしょう。

app | event | Can add event 
app | event | Can change event 
app | event | Can delete event 
関連する問題