【问题标题】:Django Admin: Dynamically remove inline fieldsDjango Admin:动态删除内联字段
【发布时间】:2017-09-15 23:00:22
【问题描述】:

如果用户没有编辑该数据的指定权限,我正在尝试动态删除内联。但是,仅当我以超级用户身份登录时才会显示内联。我将如何解决这个问题?我正在使用django-nested-inline package. 目前我正在做:

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 django-forms django-admin


    【解决方案1】:

    原来它没有显示,因为用户没有添加/编辑/删除嵌套内联事件的权限。以防万一以后有人遇到这个问题,我会留下来。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-30
      • 2012-10-19
      • 2013-06-24
      • 1970-01-01
      • 2012-05-29
      • 2014-02-05
      • 2014-12-28
      • 2011-12-21
      相关资源
      最近更新 更多