Django 管理过滤器 has_add_permission 按模型中的测试值

Django admin filter has_add_permission by test value in model

当我的用户不是超级用户时,我以只读方式传递我的 TabularInline,并且我的模型管理员状态 table 与 1 不同,我以只读方式传递。

但我无法将相同的测试值应用于 has_add_permission。

Admin.py :

class ReadOnlyTabularInline(admin.TabularInline):
    """ class Tabular Inline read only """
    extra = 0
    can_delete = False
    editable_fields = []
    readonly_fields = []
    exclude = []


    def get_readonly_fields(self, request, obj=None):
        """ status filter readony  """

        if request.user.is_superuser or obj.id_status.id_status == 1:
            return super(ReadOnlyTabularInline, self).get_readonly_fields(request, obj)
        else:
            return list(self.readonly_fields) + \
                   [field.name for field in self.model._meta.fields
                    if field.name not in self.editable_fields and
                       field.name not in self.exclude]

我要使用测试值

if request.user.is_superuser or obj.id_status.id_status == 1:

删除按钮添加

def has_add_permissions(self, request):

有什么想法吗? 谢谢

如果当前显示的表格数量超过max_num,动态link将不会出现。

我使用 max_num = 0 删除按钮添加

def get_readonly_fields(self, request, obj=None):
    """ status filter readony  """

    if request.user.is_superuser or obj.id_status.id_status == 1:
        return super(ReadOnlyTabularInline, self).get_readonly_fields(request, obj)
    else:
        self.can_delete = False
        self.max_num = 0
        return list(self.readonly_fields) + \
               [field.name for field in self.model._meta.fields
                if field.name not in self.editable_fields and
                   field.name not in self.exclude]